9

我想使用 python2.7 从 EDGAR 文件(可作为 .txt 文件在线获得)中删除任何不是文档文本的内容。文件的外观示例如下:

例子

EDGAR 从该文件的第 48 页开始提供其文档类型定义:

DTD

我的程序的第一部分将 .txt 文件从 EDGAR 在线数据库中获取到我命名为“parseme.txt”的本地文件中。我想知道的是如何使用 DTD 来解析 .txt 文件。我会使用像 BeautifulSoup 这样的罐装解析模块来完成这项工作,但 EDGAR 的格式看起来很独特,我希望避免使用大型正则表达式来完成工作。

import os
filename = 'parseme.txt'
with open(filename) as f:
    lines = f.readlines()

我的问题与Parse SGML with Open Arbitrary Tags in Python 3Use lxml to parse text file with bad header in Python有关,但我认为与 python2.7 相关,我不关心标题- 我只关心文件的文本。

4

4 回答 4

3

pysec项目看起来很有希望这是一个基本的 Django 应用程序,它下载 Edgar 指数,然后允许您下载特定的文件并从 XBRL 中提取财务参数。

于 2014-01-19T02:54:59.677 回答
3

查看OpenSP 工具包,其中包含处理 SGML 文件的程序。您最简单的选择可能是使用该osx程序获取输入文件的 XML 版本,之后您可以使用 XML 处理工具。

首先可能需要进行一些设置,因为 OpenSP 包没有附带 EDGAR DTD 或其 SGML 声明(第 48 页的参考资料中的第一部分,以 开头<!SGML "ISO 8879-1986")。您必须将它们作为文本文件获取,并将它们添加到 SP 解析器可以找到它们的目录中。

更新本文档似乎是更新的版本。不过,随便的谷歌搜索不会出现任何立即机器可处理的版本。因此,您可能必须从 PDF 中复制粘贴。

但是,如果您这样做,则必须删除一些无关的格式:似乎有分页指示符,标记为“C-1”、“C-2”等。它们不是 SGML 的一部分,需要删除。

您可以将 SGML 声明和 EDGAR DTD 添加到目录中(在这种情况下,DTD 文件应该只包含 [ after<!DOCTYPE submission和匹配的 ] 中的部分),或者您可以创建一个包含两者的“prolog”文件部分按原样(即包括<!DOCTYPE submission [and ]>)并在 prolog 和您的 SGML 文件上运行工具包中的任何程序 - 即将两个名称放在命令行上,首先使用 prolog 文件,以便解析器读取两个文件正确的顺序。要了解发生了什么,您需要知道 SGML 解析器需要三个信息来进行解析:设置一些环境和处理参数的 SGML 声明,然后是描述文档结构约束的 DTD,最后是文档本身.

于 2012-12-31T20:06:30.123 回答
0

下面的链接是将 EDGAR 文件解析为 SQLite DB 的库。它包含从 EDGAR FPT 站点提取 Form10k 和 Form8Qk 文件的功能,这些文件可以在您指定的年份内将它们加载到 SQLite DB 表中的规范化格式中。考虑到文件的标准不严格,编写自己的解析脚本将是一项重大任务。该库和类似于下面的代码将加载所需季度的文件,从那里您可以简单地查询表以获取您正在寻找的数据。

edgar.database.create()
# Load quarterly master index files into local sqlite db
quarters = []
#Q3 2009
quarters.add(2009,3)
#Q3 2008
quarters.add(2008,3)
edgar.database.load(quarters)

http://rf-contrib.googlecode.com/svn/trunk/ha/src/main/python/edgar/

于 2013-06-26T22:14:51.033 回答
-1

检查 edgarWebR ( https://mwaldstein.github.io/edgarWebR/ ) 中的两个函数:

parse_submission()

解析归档()

parse_submission 适用于您从 edgar 获得的 SGML 文档。

parsed_submission <- try(parse_submission(my_file_name))

然后从解析的提交中获取文本:

tmp <- parsed_submission[parsed_submission$TYPE=='10-K',]

content_text <- tmp$TEXT

最后你可以通过解析文件来获取项目

归档 <- try(parse_text_filing(content_text))

于 2021-07-03T08:59:35.200 回答