Python 获取文本文件的特定属性

Python 获取文本文件的特定属性,python,text,python-3.x,Python,Text,Python 3.x,因此,我有一个文本文件,其中包含以下格式的信息: |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

因此,我有一个文本文件,其中包含以下格式的信息:

|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属性并选择要返回的属性,然后只返回该属性?

对于这种类型的数据文件,最好使用
csv
包,但在现有代码中,您可以这样做:

columns = ['NAME', '70', 'AST', 'TYPE', 'LOCATION', '3', 'SOMETHING', 'MNUM_1', 'NUM_2', 'DESCRIPTION']
return to_search[requested_name][columns.index(requested_column)]

让第一行作为字段的名称,然后您可以这样做:

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文件遵循这种惯例(在第一行中命名列)正是出于这个原因。

如果每个条目的每个属性都不同,我仍然可以这样做吗?@user1985351是的,为什么不?这真的是一个与其他问题不同的问题吗?