从txt文件中提取特定部分 - python

时间:2018-04-21 20:36:34

标签: python text document

我想从网站https://www.sec.gov/Archives/edgar/data/3662/0000950170-98-000413.txt

中提取“管理层讨论和分析”部分

我想概括整个过程,以便它可以与同一网站上的其他文件一起使用:https://www.sec.gov/

2 个答案:

答案 0 :(得分:0)

这是您在文件中逐行迭代时可以执行的操作。您可以开始将记录行记录到该部分开头的列表中,然后在该部分的结尾或下一部分的开头停止记录。将正确的部分合并到行列表后,您可以使用换行符“加入”列表以输出感兴趣的特定部分。对于你的特定例子,这是你可以做的事情......

import re
import sys

recording = False
your_file = "sec.txt"
start_pattern = "^ITEM 7. MANAGEMENT'S DISCUSSION AND ANALYSIS"
stop_pattern = "^ITEM 8."
output_section = []

for line in open(your_file).readlines():
    if recording is False:
        if re.search(start_pattern, line) is not None:
            recording = True
            output_section.append(line.strip())
    elif recording is True:
        if re.search(stop_pattern, line) is not None:
            recording = False
            sys.exit()
        output_section.append(line.strip())

print '\n'.join(output_section)

最终的印刷声明应该打印出以“项目7.管理层讨论和分析”和“项目8”开头的行为界的部分。请注意,胡萝卜字符与行的开头匹配。刚刚通过下载你指向sec.txt的文档在本地进行了测试,它对我有用。

您可以通过将start_pattern和stop_pattern设置为传递给命令行的参数来概括其他文档。例如,将以下内容与我在上面发布的代码合并:

import sys

start_pattern = sys.argv[1]
stop_pattern = sys.argv[2]

然后你可以像这样调用你的脚本来获得与上面硬编码相同的结果:

python name_of_your_script.py "^ITEM 7. MANAGEMENT'S DISCUSSION AND ANALYSIS" "^ITEM 8."

我希望这会有所帮助。

答案 1 :(得分:0)

使用此方法,您可以从特定部分提取内容:

extract = re.findall(r'(?<=ITEM 7.)(?s)(.*?)(?=ITEM 8.)',text)