2013-01-17 130 views
-5

下面是示例文本:如何使用Python从文本文件中提取数据?

ACCESSION NUMBER:   0001054274-12-000001 
CONFORMED SUBMISSION TYPE: D 
PUBLIC DOCUMENT COUNT:  1 
ITEM INFORMATION:   Rule 506 
FILED AS OF DATE:   20120301 
DATE AS OF CHANGE:   20120301 
EFFECTIVENESS DATE:   20120301 

FILER: 

COMPANY DATA: 
    COMPANY CONFORMED NAME:    Alliqua, Inc. 
    CENTRAL INDEX KEY:     0001054274 
    STANDARD INDUSTRIAL CLASSIFICATION: SURGICAL & MEDICAL INSTRUMENTS & APPARATUS [3841] 
    IRS NUMBER:       582349413 
    STATE OF INCORPORATION:    FL 
    FISCAL YEAR END:      1220A 

我试图把所有的变量(登记号,提交的顺应型,...,一财年),并最终把它们写到.csv文件。有什么建议么?

+4

欢迎堆栈溢出!看起来你希望我们为你写一些代码。尽管许多用户愿意为遇险的编码人员编写代码,但他们通常只在海报已尝试自行解决问题时才提供帮助。证明这一努力的一个好方法是包含迄今为止编写的代码,示例输入(如果有的话),期望的输出和实际获得的输出(控制台输出,堆栈跟踪,编译器错误 - 无论是适用)。您提供的细节越多,您可能会收到的答案就越多。 –

+0

你到目前为止尝试过什么?我会查看[re module](http://docs.python.org/2/library/re.html)和[input and output](http://docs.python.org/2/tutorial/inputoutput .html) –

+2

@MartijnPieters:粘贴表单响应的时候有什么意思,说如果你这样做,没有人会为他们编写代码? – geoffspear

回答

3

我分割线向上通过第一:和剥离结果:

data = {} 
with open(filename) as inputf: 
    for line in inputf: 
     if not ':' in line: 
      continue 
     label, value = map(str.strip, line.split(':', 1)) 
     if label and value: 
      data[label] = value 

其输出下面的映射:

{'ACCESSION NUMBER': '0001054274-12-000001', 
'CENTRAL INDEX KEY': '0001054274', 
'COMPANY CONFORMED NAME': 'Alliqua, Inc.', 
'CONFORMED SUBMISSION TYPE': 'D', 
'DATE AS OF CHANGE': '20120301', 
'EFFECTIVENESS DATE': '20120301', 
'FILED AS OF DATE': '20120301', 
'FISCAL YEAR END': '1220A', 
'IRS NUMBER': '582349413', 
'ITEM INFORMATION': 'Rule 506', 
'PUBLIC DOCUMENT COUNT': '1', 
'STANDARD INDUSTRIAL CLASSIFICATION': 'SURGICAL & MEDICAL INSTRUMENTS & APPARATUS [3841]', 
'STATE OF INCORPORATION': 'FL'} 
+0

我得到这个错误:如果不是 7 ':' 在一行: 8继续 ----> 9标签,值=地图(str.strip,line.split( ':',1)) 10如果标签和值: 11数据[标签] =值 ValueError:需要多个值才能解包 –

+0

@RossG:我的歉意是,我的回答中出现了缩进失误。现在修复。 –

+0

+1:这真的很漂亮的Python! –

相关问题