用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])
一个字的警告,这种解决方案假定名称是唯一的,如果他们不是更复杂的解决方案可能是必需的。
答
首先你需要以某种方式打破文件。我认为字典是最好的选择。然后你可以得到你需要的东西。
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')
您可以扩展我如何使用'to_search [NAME]'进行搜索吗? – user1985351 2013-03-24 01:11:13
代码'to_search [NAME]'其中NAME是一个名字(作为一个字符串)会给你所有与该名字相关的数据。 – jhoyla 2013-03-24 01:15:10
我试图实现你的代码,它提出了一个keyerror说:“KeyError:'名称'”。不太确定我做错了什么。 – user1985351 2013-03-24 01:24:49