2012-11-22 24 views
6

私はpython2.7を使用して、EDGARファイル(.txtファイルとしてオンラインで入手可能)から文書のテキストを削除したいと考えています。ファイルがどのように見えるかの例はここにある:EDGARファイルの解析

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 3Use lxml to parse text file with bad header in Pythonでの質問に関連しているが、私の質問はpython2.7に関連し、私は明確な信じていると私は、ヘッダーに関係ないんだけどさ - 私はのテキストを持つだけ心配ファイル。

+0

ここではPythonのバージョンが大したことはないと思います。あなたは、リンクされた質問への回答で提供されたアイデアを試しましたか?あなたはどこにいらっしゃいますか? – mzjn

答えて

4

​​には、SGMLファイルを処理するプログラムがあります。あなたの最も単純なオプションはおそらくosxプログラムを使用して入力ファイルのXMLバージョンを取得することです。その後、XML処理ツールを使用できます。

OpenSPパッケージにEDGAR DTDまたはそのSGML宣言が付属していないため、最初に行う設定があります(483ページの参考文献の最初の部分、<!SGML "ISO 8879-1986"で始まる)。これらをテキストファイルとして取得し、SPパーサがそれらを見つけることができるカタログに追加する必要があります。

更新This documentが最新のようです。しかし、カジュアルなGoogle検索では、すぐに処理可能なバージョンは出てこない。 PDFからコピー貼り付けが必要な場合があります。

ただし、削除する必要のある余分な書式があります。「C-1」、「C-2」などの改ページ記号が表示されているようです。それらはSGMLの一部ではなく、削除する必要があります。

SGML宣言とEDGAR DTDをカタログに追加することができます(この場合、DTDファイルの末尾に[<!DOCTYPE submissionの後ろに一致する]の部分のみが含まれている必要があります)。または、プロローグ(つまり、<!DOCTYPE submission []>を含む)ファイルを作成し、プロローグとSGMLファイルのツールキット内のプログラムを実行します。つまり、コマンドラインに両方の名前をプロローグファイルで置きます。パーサは両方のファイルを正しい順序で読み込みます。何が起きているのかを理解するためには、SGMLパーサーが解析のために3つの情報を必要としていることを知る必要があります:環境と処理のパラメータを設定するSGML宣言、次に文書の構造的制約を記述するDTD、 。

+0

リンクされた質問の1つに[類似の回答](http://stackoverflow.com/a/12534420/407651)を投稿しました。しかし、私はいかなるフィードバックも受けていません。 – mzjn

+0

これらのPEMカプセル化メッセージは、EDGARファイリングのようには見えません。むしろそれらは通信記録保管所から取られているようです。関連するDTDは他の場所になければなりません。 – arayq2

1

以下のリンクは、EDGARファイルを解析してSQLite DBにするライブラリです。これには、FormitekおよびForm8QkファイルをEDGAR FPTサイトから引き出し、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/

+0

ほとんどのリンクである答えは、多くの理由でSOには推奨されません。あなたは他のユーザーを助けるためにリンクの重要な側面を言い換えていただけますか? – chrislondon

+2

リンクは今パスワードを要求しているようです – prewett

+1

リンクが404に戻りません:-) – erm3nda

4

pysecプロジェクトが有望に見えます。 Edgarのインデックスをダウンロードし、XBRLから特定のファイルをダウンロードし、財務パラメータを抽出することができる、基本的なDjangoアプリケーションです。