我正在尝试从多个SEC 10-K文件中提取特定组合的关键字之前和之后的5行,然后将该数据导出到Excel中,以便随后进行手动进一步处理。 不幸的是,我不得不依靠.txt格式的文件,而不是.html或.xblr的文件,因为后者并不总是可用。我已经下载并部分清理了.txt文件,以删除不需要的标签。
简而言之,我的目标是告诉python遍历下载的.txt文件(例如,所有同一个文件夹中的文件,或者只是通过提供包含所有文件名的参考.txt列表),打开每个文件,寻找“累积效果”一词(最好与其他关键字结合使用,请参见下面的代码),在其前后提取5行,然后将输出导出到具有A列中的文件名和B列中提取的段落的excel。 / p>
使用this code,我设法为一个.txt文件(您可以找到here,以供参考)在关键字“累积效果”的上方和下方提取5行。 但是,我仍然在努力使整个过程自动化/循环并使用大熊猫将提取的文本导出到Excel。
import collections
import itertools
import sys
from pandas import DataFrame
filing='0000950123-94-002010_1.txt'
#with open(filing, 'r') as f:
with open(filing, 'r', encoding='utf-8', errors='replace') as f:
before = collections.deque(maxlen=5)
for line in f:
if ('cumulative effect' in line or 'Cumulative effect' in line) and ('accounting change' in line or 'adoption' in line or 'adopted' in line or 'charge' in line):
sys.stdout.writelines(before)
sys.stdout.write(line)
sys.stdout.writelines(itertools.islice(f, 5))
break
before.append(line)
findings = {'Filing': [filing],
'Extracted_paragraph': [line]
}
df = DataFrame(findings, columns= ['Filing', 'Extracted_paragraph'])
export_excel = df.to_excel (r'/Users/myname/PYTHON/output.xlsx', index = None, header=True)
print (df)
使用这一行代码,我获得了所需的段落,但是我仅设法将包含关键字的单行导出为excel,而不是整个文本。 This is the python output和 this is the exported text to Excel。
如何创建循环并将感兴趣的整个段落正确导出到excel? 提前非常感谢!
答案 0 :(得分:0)
我相信您的基本错误是
'Extracted_paragraph': [line]
应该是
'Extracted_paragraph': [before]
因此,通过一些简化的更改,代码的主要部分应如下所示:
with open(filing, 'r', encoding='utf-8', errors='replace') as f:
before = collections.deque(maxlen=5)
for line in f:
if ('cumulative effect' in line or 'Cumulative effect' in line) and ('accounting change' in line or 'adoption' in line or 'adopted' in line or 'charge' in line):
break
before.append(line)
before = ''.join(before)
findings = {'Filing': [filing],
'Extracted_paragraph': [before]
}
df = DataFrame(findings, columns= ['Filing', 'Extracted_paragraph'])
然后从那里继续导出到Excel等。