200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python正则表达式处理文本内容_Python处理txt文本

python正则表达式处理文本内容_Python处理txt文本

时间:2018-11-26 21:00:37

相关推荐

python正则表达式处理文本内容_Python处理txt文本

一. 背景目的

上一篇推文可以获得WOS导出文献内容,接着就是对文本进行处理。提取出其中的有用信息,比如 作者信息、年份、引用因子、题目等等,同样继续用Python处理很方便。

二. 实现方法

2.1分析需要什么样的数据结构

txt 文档内容可以简化为如下的文档结构,每一篇文献的参数用两位大写字母表示。比如,TI 表示文献的标题,AU表示文献的作者等等,ER表示到达文献的末尾,同时文献与文献之间用空行分隔!

PJ : YYYYYYAU:XXXXXXTI:MMMMMMAB:ZZZZZZ .....UT:UUUUUUPM:IIIIIIER PG :YYYYY

真实的文档结构如下图所示

如果想提取其中的某些关键信息,用正则表达式可以做到。但是作为一个轻微强迫症就想把所有信息都保存下来,然后就可以根据自己的规则随意调取所需数据,于是我想到了用 list 和 dict 来保存所有数据。

total=[paper1,paper2, paper3.....]paper= {"AU':"UUUUU", '''"TI": "TTTT",}

整个文件打包成一个list,这样可以通过切片访问每一篇文献,同时具体的文献信息用dict表示,根据索引 "AU" ,"TI"...等等就可以访问到其中的内容。

2.2 代码的实现

这次代码不多,直接贴在这里!

def get_doi(file_name): packages = [] package_dict = {} flag = False with open(file_name, 'r', encoding='utf-8') as f: while True: line = f.readline() if line:if line[:2] != 'ER':if line[:2] != ' ': flag = False if not flag: temp_str = '' temp_title = '' temp_title = line[:2] temp_str = line[3:-1] if temp_title != 'AU' else line[3:-1] + ';' package_dict[temp_title] = temp_str elif line[:2] == ' ' and line != '\n': flag = True temp_str += line[2:-1] if temp_title != 'AU' else line[3:-1] + ';' package_dict[temp_title] = temp_str else:packages.append(package_dict)package_dict = {} else:break return packages

三. 结果展示

if __name__ == "__main__": file_name = 'LNOI.txt' allpapers = get_doi(file_name)print("totalhas{}papers".format(len(allpapers)))#查看有多少篇文献forindex,itemsinenumerate(allpapers[10:20]):#通过切片访问所需文献的信息 try: doi = items['DI'] print(doi) except Exception : print('no doi')

输出显示:可以看到成功的打印了第10-19的文献doi。

四. 后续计划

将提取出来的数据进行分析,EXCEL?根据DOI爬虫下载文献?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。