所以我有一个文本文件,其中包含以下格式的信息:
|NAME|70|AST|TYPE|LOCATION|3||MNUM_1|NUM_2|DESCRIPTION|
我的代码在文本文件中搜索NAME属性,然后返回除拆分字符“|”之外的所有信息。这是我的代码:
with open('TEXT.txt') as fd:
input=[x.strip('|').split('|') for x in fd.readlines()]
to_search={x[0]:x for x in input}
print('\n'.join(to_search[name]))
有没有办法编辑我的代码,以便我可以在文本文件中搜索name属性并选择我想要返回的属性并返回该属性?
答案 0 :(得分:0)
最好将csv
包用于此类数据文件,但在现有代码中,您可以执行此操作:
columns = ['NAME', '70', 'AST', 'TYPE', 'LOCATION', '3', 'SOMETHING', 'MNUM_1', 'NUM_2', 'DESCRIPTION']
return to_search[requested_name][columns.index(requested_column)]
答案 1 :(得分:0)
如果第一行是字段的名称,那么你可以这样做:
search_key = 'NAME'
search_query = 'foo'
with open('TEXT.txt') as fin:
keys = fin.readline().strip('|').split('|')
for line in fin:
columns = line.strip().strip('|').split('|')
obj = dict(zip(keys, columns))
if obj[search_key] == search_query:
...
正是出于这个原因,许多csv文件遵循这个约定(在第一行中命名列)。