【发布时间】:2018-04-21 20:36:33
【问题描述】:
我想从网站https://www.sec.gov/Archives/edgar/data/3662/0000950170-98-000413.txt中提取“管理层的讨论和分析”部分
我想概括一下这个过程,以便它可以与同一网站上的其他文件一起使用:https://www.sec.gov/
【问题讨论】:
-
到目前为止你尝试过什么?一些代码?
我想从网站https://www.sec.gov/Archives/edgar/data/3662/0000950170-98-000413.txt中提取“管理层的讨论和分析”部分
我想概括一下这个过程,以便它可以与同一网站上的其他文件一起使用:https://www.sec.gov/
【问题讨论】:
这是您在逐行迭代文件中的行时可以执行的操作。您可以在该部分的开头将行记录到列表中,然后在该部分的末尾或下一部分的开头停止录制。将正确的部分合并到行列表中后,您可以使用换行符“加入”列表以输出感兴趣的特定部分。对于您的特定示例,您可以这样做...
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)
最后的打印语句应该打印出以“ITEM 7. MANAGEMENT'S DISCUSSION AND ANALYSIS”和“ITEM 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."
我希望这会有所帮助。
【讨论】:
使用它,您可以从特定部分中提取内容:
extract = re.findall(r'(?<=ITEM 7.)(?s)(.*?)(?=ITEM 8.)',text)
【讨论】: