解析EDGAR文件

phi*_*ilq 8 python sgml parsing python-2.7

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

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

DTD

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

import os
filename = 'parseme.txt'
with open(filename) as f:
    lines = f.readlines()
Run Code Online (Sandbox Code Playgroud)

我的问题与Parse SGML中的问题有关,在Python 3中使用开放任意标记,使用lxml来解析Python中带有错误标题的文本文件,但我相信我的问题与python2.7有关并且我不关心标题 - 我只关心文件的文本.

ara*_*yq2 3

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

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

更新该文档似乎是更新的版本。不过,随意的谷歌搜索并不会找到任何立即机器可处理的版本。因此,您可能需要从 PDF 中复制粘贴。

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

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