从文本中提取特定段落
我刚开始学Python,有个问题想请教。我有几个文本文件,想从每个文件中提取出“结论”部分。
这些文本文件的内容大概是这样的:
结果:在调整后的分析中,每小时PAC的数量翻倍与心房颤动(AF)风险显著增加有关(风险比,1.17 [95% 置信区间,1.13到1.22])
限制:这项研究并没有建立PAC和AF之间的因果关系。
结论:将PAC数量加入到一个经过验证的AF风险算法中,可以更好地区分AF风险,并显著改善风险重新分类。还需要进一步研究来确定PAC的调整是否能前瞻性地降低AF风险。
主要资助来源:美国心脏协会、约瑟夫·德朗基金会和国家卫生研究院。
而且我在同一个文件夹里有多个这样的文件,怎么才能对这个文件夹里的所有文件都做同样的操作呢?
谢谢大家的帮助!
3 个回答
0
这个链接可以帮助你列出一个文件夹里的所有文件。
接下来,对于每个文件,
- 逐行读取文件中的内容
- 检查当前行是否以“CONCLUSION:”开头:
- 在这一行中提取出“CONCLUSION:”后面的所有内容:
1
你应该使用正则表达式来提取你需要的数据:
import re
import os, os.path
PATH = 'path/to/your/files/'
conclusions = []
for file in os.listdir(path):
with open(os.path.join(PATH, file)) as f:
data = f.read()
conclusion = re.search('CONCLUSION: (.*?)([A-Z]{2,})', data).group(1)
conclusions.append(conclusion)
这个代码会查找 'CONCLUSION: '
这个标题,然后接着扫描它后面的数据,直到遇到下一个标题为止。这个下一个标题总是一个大写字母开头的单词,就像你指定的那样。
2
我对正则表达式不太在行,也不太确定这是否是最好的方法,但它确实有效 :)
import os
import re
path = 'path/to/your/files/'
for i in os.listdir(path):
with open(path+i) as f:
content = f.read()
pattern = re.compile('CONCLUSION:\s*([\s\w.]*)\n[A-Z\s]*:')
print pattern.findall(content)[0]