所以我有一个大文本文件。它包含以下格式的一堆信息:
|NAME|NUMBER(1)|AST|TYPE(0)|TYPE|NUMBER(2)||NUMBER(3)|NUMBER(4)|DESCRIPTION|
抱歉模糊不清。所有信息的格式如上,每个描述符之间是分隔符“|”。我希望能够在文件中搜索“NAME”并在其自己的标签中打印每个描述符,例如:
Name
Number(1):
AST:
TYPE(0):
etc....
如果我仍然感到困惑,我希望能够搜索名称,然后打印出每个被“|”分隔的信息。
有人可以帮忙吗?
EDIT 以下是文本文件的一部分示例:
| Trevor Jones | 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]))
答案 0 :(得分:2)
像
这样的东西#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])
警告一句,这个解决方案假设名称是唯一的,如果它们不是一个更复杂的解决方案可能是必需的。
答案 1 :(得分:2)
首先,您需要以某种方式破坏文件。我认为字典是最好的选择。然后你就可以得到你需要的东西。
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')