2012-11-22 59 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聲明(第48頁的參考資料的第一部分,從<!SGML "ISO 8879-1986"開始),因此可能需要進行一些設置。您必須將這些文本文件作爲文本文件並將其添加到SP解析器可以找到它們的目錄中。

UPDATEThis document似乎是一個更先進的最新版本。儘管如此,一個休閒的谷歌搜索沒有任何立即可機器處理的版本。所以你可能需要從PDF複製粘貼。

但是,如果你這樣做了,你將不得不刪除一些無關的格式:似乎有分頁符指示符,標記爲「C-1」,「C-2」等等。它們不是SGML的一部分,需要刪除。

您可以將SGML聲明和EDGAR DTD添加到目錄中(在這種情況下,DTD文件應該只在[末尾<!DOCTYPE submission和匹配項]後面包含該部分),也可以創建一個「序言「文件由兩部分組成(即包括<!DOCTYPE submission []>),並在prolog和SGML文件的工具包中運行任何程序 - 即將兩個名稱放在命令行上,首先使用prolog文件,以便解析器將以正確的順序讀取這兩個文件。爲了理解發生了什麼,你需要知道一個SGML解析器需要三條信息進行解析:一個SGML聲明來設置一些環境和處理參數,然後是一個描述文檔結構約束的DTD,最後是文檔本身。

+0

我發佈了[類似的答案](http://stackoverflow.com/a/12534420/407651)到一個鏈接的問題。但我沒有收到任何反饋。 – mzjn

+0

這些PEM封裝的消息看起來不像EDGAR文件。而是他們似乎被從通信檔案中拿走。相關的DTD必須在其他地方。 – arayq2

1

下面的鏈接是一個將EDGAR文件分析到SQLite數據庫的庫。它包含從EDGAR FPT站點提取Form10k和Form8Qk文件多年的功能,並且可以在SQLite數據庫表中將它們加載到規範化格式。考慮到申請標準不夠完善,編寫自己的解析腳本將是一項重大任務。該庫和類似於下面的代碼將加載所需季度的文件,並從那裏您可以簡單地查詢表中的數據,您正在尋找。

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項目看起來很有希望。這是一個基本的Django應用程序,可下載Edgar索引,然後允許您下載特定文件並從XBRL中提取財務參數。