我想使用python2.7从EDGAR文件(可以在线获得.txt文件)中删除除文档文本以外的任何内容。下面是文件外观的一个示例:
Example
EDGAR提供了从该文件的第48页开始的文档类型定义:
DTD
我的程序的第一部分从EDGAR在线数据库获取.txt文件,并将其放入一个我已命名为"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 3和Use lxml to parse text file with bad header in Python的问题有关,但我认为不同,因为我的问题与python2.7有关,我不关心头部-我只关心文件的文本。
发布于 2013-01-01 04:06:30
看看OpenSP toolkit,它有处理SGML文件的程序。最简单的选择可能是使用osx程序获取输入文件的XML版本,然后可以使用XML处理工具。
首先可能要做一些设置,因为OpenSP包没有附带EDGAR DTD或它的SGML声明(您在第48页的参考资料中的第一部分,从<!SGML "ISO 8879-1986"开始)。您必须以文本文件的形式获取它们,并将它们添加到SP解析器可以找到它们的目录中。
更新:This document似乎是一个更新的版本。不过,随便在谷歌上搜索一下,并不能立即找到任何机器可处理的版本。因此,您可能需要从PDF中复制-粘贴。
但是,如果这样做,您将不得不删除一些无关的格式:似乎有分页符,标签为"C-1“、"C-2”等等。它们不是SGML的一部分,需要删除。
你可以添加SGML声明和EDGAR DTD到目录中(在这种情况下,DTD文件应该只包含在<!DOCTYPE submission后面的部分和末尾的匹配部分),或者你可以创建一个由这两部分组成的" prolog“文件(即包括<!DOCTYPE submission [和]>),然后在prolog和你的SGML文件上运行工具包中的任何程序-即把两个名字放在命令行上,放在prolog文件的前面,这样解析器将以正确的顺序读取这两个文件。要理解发生了什么,您需要知道SGML解析器需要用于解析的三部分信息:设置一些环境和处理参数的SGML声明,描述文档上的结构约束的DTD,最后是文档本身。
发布于 2014-01-19 10:55:00
pysec项目看起来很有前途。这是一个基本的Django应用程序,可以下载Edgar索引,然后允许您下载特定的文件并从XBRL中提取财务参数。
发布于 2013-06-27 06:14:51
下面的链接是一个库,它将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/
https://stackoverflow.com/questions/13504278
复制相似问题