我想从网站https://www.sec.gov/Archives/edgar/data/3662/0000950170-98-000413.txt
中提取“管理层讨论和分析”部分我想概括整个过程,以便它可以与同一网站上的其他文件一起使用:https://www.sec.gov/
答案 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)