【发布时间】:2019-02-04 16:26:03
【问题描述】:
我正在使用 python 进行文本提取。输出不像我想要的那样理想!
我有一个包含如下信息的文本文件:
FN Clarivate Analytics Web of Science
VR 1.0
PT J
AU Chen, G
Gully, SM
Whiteman, JA
Kilcullen, RN
AF Chen, G
Gully, SM
Whiteman, JA
Kilcullen, RN
TI Examination of relationships among trait-like individual differences,
state-like individual differences, and learning performance
SO JOURNAL OF APPLIED PSYCHOLOGY
CT 13th Annual Conference of the
Society-for-Industrial-and-Organizational-Psychology
CY APR 24-26, 1998
CL DALLAS, TEXAS
SP Soc Ind & Org Psychol
RI Gully, Stanley/D-1302-2012
OI Gully, Stanley/0000-0003-4037-3883
SN 0021-9010
PD DEC
PY 2000
VL 85
IS 6
BP 835
EP 847
DI 10.1037//0021-9010.85.6.835
UT WOS:000165745400001
PM 11125649
ER
当我像这样使用我的代码时
import random
import sys
filepath = "data\jap_2000-2001-plain.txt"
with open(filepath) as f:
articles = f.read().strip().split("\n")
articles_list = []
author = ""
title = ""
year = ""
doi = ""
for article in articles:
if "AU" in article:
author = article.split("#")[-1]
if "TI" in article:
title = article.split("#")[-1]
if "PY" in article:
year = article.split("#")[-1]
if "DI" in article:
doi = article.split("#")[-1]
if article == "ER#":
articles_list.append("{}, {}, {}, https://doi.org/{}".format(author, title, year, doi))
print("Oh hello sir, how many articles do you like to get?")
amount = input()
random_articles = random.sample(articles_list, k = int(amount))
for i in random_articles:
print(i)
print("\n")
exit = input('Please enter exit to exit: \n')
if exit in ['exit','Exit']:
print("Goodbye sir!")
sys.exit()
提取不包括换行后输入的数据, 如果我运行此代码,输出将类似于“AU Chen, G”,并且不包括其他名称,与 Title 等相同。
我的输出如下:
Chen, G. 性状关系检验,2000,doi.dx.10.1037//0021-9010.85.6.835
期望的输出应该是:
Chen, G., Gully, SM., Whiteman, JA., Kilcullen, RN., 2000,特质类个体差异、状态类个体差异和学习表现之间关系的检验,doi.dx.10.1037 //0021-9010.85.6.835
但提取只包括每一行的第一行——
有什么建议吗?
【问题讨论】:
-
您能否让您的示例文件更简洁一些,并具体说明您的预期输出应该是什么?
-
示例文件是从搜索引擎提取的.txt,它从文章中提取数据。期望的输出应该是:Chen, G., Gully, SM., Whiteman, JA., Kilcullen, RN., 2000, 检查特征样个体差异、状态样个体差异和学习表现之间的关系,@987654321 @,但提取只包括每一行的第一行
-
我明白了,但我们很难用肉眼来解析它。如果您可以为我们简化它,并将“yadayada”替换为真实的预期输出,那就太好了。
-
抱歉,按输入太早了:)
标签: python string extraction