【问题标题】:Get Specific Attribute of Text File获取文本文件的特定属性
【发布时间】:2013-03-28 16:31:52
【问题描述】:

所以我有一个包含以下格式信息的文本文件:

|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 属性并选择我想要返回的属性并返回该属性?

【问题讨论】:

标签: python text python-3.x


【解决方案1】:

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

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

【讨论】:

  • 如果每个条目的每个属性都不同,我还能这样做吗?
  • @user1985351 是的,为什么不呢?
【解决方案2】:

让第一行作为字段名称怎么样,然后你可以这样做:

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 文件都遵循这个约定(将列命名在第一行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多