用Python从文本文件中提取数据

问题描述:

所以我有一个很大的文本文件。它包含以下格式的一串信息:用Python从文本文件中提取数据

|NAME|NUMBER(1)|AST|TYPE(0)|TYPE|NUMBER(2)||NUMBER(3)|NUMBER(4)|DESCRIPTION| 

对不起。所有信息格式如上,在每个描述符之间是分隔符'|'。我希望能够在自己的标签中的每个描述符在文件中搜索“姓名”和打印像这样的例子:

Name 
Number(1): 
AST: 
TYPE(0): 
etc.... 

如果我仍然混乱,我希望能够搜索名称,然后打印出每个由'|'分隔的信息。

任何人都可以帮忙吗?

编辑 这里是文本文件的一部分的例子:

|特雷弗琼斯| 70 | AST |白色|地球| 3 || 500 | 1500 |老人生活在养老院|

这是我的代码至今:

with open('LARGE.TXT') as fd: 
    name='Trevor Jones' 
    input=[x.split('|') for x in fd.readlines()] 
    to_search={x[0]:x for x in input} 
    print('\n'.join(to_search[name])) 

喜欢的东西

#Opens the file in a 'safe' manner 
with open('large_text_file') as fd: 
    #This reads in the file and splits it into tokens, 
    #the strip removes the extra pipes 
    input = [x.strip('|').split('|') for x in fd.readlines()] 
    #This makes it into a searchable dictionary 
    to_search = {x[0]:x for x in input} 

,然后用

to_search[NAME] 

根据格式搜索您想要使用的答案

print ' '.join(to_search[NAME]) 

print '\n'.join(to_search[NAME]) 

一个字的警告,这种解决方案假定名称是唯一的,如果他们不是更复杂的解决方案可能是必需的。

+0

您可以扩展我如何使用'to_search [NAME]'进行搜索吗? – user1985351 2013-03-24 01:11:13

+0

代码'to_search [NAME]'其中NAME是一个名字(作为一个字符串)会给你所有与该名字相关的数据。 – jhoyla 2013-03-24 01:15:10

+0

我试图实现你的代码,它提出了一个keyerror说:“KeyError:'名称'”。不太确定我做错了什么。 – user1985351 2013-03-24 01:24:49

首先你需要以某种方式打破文件。我认为字典是最好的选择。然后你可以得到你需要的东西。

d = {} 
# Where `fl` is our file object 
for L in fl: 
    # Skip the first pipe 
    detached = L[1:].split('|') 
    # May wish to process here 
    d[detached[0]] = detached[1:] 
# Can do whatever with this information now 
print d.get('string_to_search')