我正在用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”,并且不包括其他名称,与标题等相同
我的输出如下所示:
陈庚。性状间关系的检验,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
但是提取只包括每行的第一行-
有什么建议吗?你知道吗
初步了解
根据你的例子,我认为:
ER
分隔的人工部分标记记录的结束。你知道吗ER
部分不包含可用的文本。你知道吗也可能出现以下情况:
FN
标记开始。你知道吗FN / ER
对之外遇到的任何文本都可以忽略。你知道吗建议设计
如果这是真的,我建议您使用该逻辑编写一个文本处理器:
ER
。你知道吗ER
状态的文本,直到遇到FN
行。你知道吗ER
状态时,将累计记录添加到累计记录列表中。你知道吗在这个过程结束时,您将有一个记录列表,其中包含各种累积的标记。然后可以用各种方式处理标记。你知道吗
像这样:
在解析文件时,需要跟踪所处的节。有更简洁的方法来编写状态机,但是作为一个快速简单的示例,您可以执行以下操作。你知道吗
基本上,将每个部分的所有行添加到该部分的列表中,然后合并列表并在末尾执行任何操作。注意,我没有测试这个,只是用psuedo编码来告诉你大概的想法。你知道吗
相关问题 更多 >
编程相关推荐