0

我试图从几个 SEC 10-K 文件中提取特定关键字组合之前和之后的 5 行,然后将该数据导出到 Excel 中,以便我可以进一步手动处理它。不幸的是,我不得不依赖 .txt 格式的文件而不是 .html 或 .xblr 文件,因为后者并不总是可用的。我已经下载并部分清理了 .txt 文件以删除不需要的标签。

简而言之,我的目标是告诉 python 遍历下载的 .txt 文件(例如,所有在同一个文件夹中的文件,或者只是提供一个包含所有文件名的引用 .txt 列表),打开每个文件,查找单词“累积效果”(理想情况下与其他关键字组合,见下面的代码),提取前后5行,然后将输出导出到excel中,文件名在A列,提取的段落在B列。

使用此代码,我设法为一个 .txt 文件(您可以在此处找到,以供参考)的关键字“累积效应”上方和下方提取 5 行。但是,我仍在努力自动化/循环整个过程并使用 pandas 将提取的文本导出到 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,而不是整个文本。 这是 python 输出这是导出到 Excel 的文本

如何创建循环并将感兴趣的整个段落正确导出到 excel 中?非常感谢提前!!

4

1 回答 1

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 等。

于 2019-05-15T17:11:09.093 回答