0

したがって、次の形式の情報でいっぱいのテキスト ファイルがあります。

|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 属性を検索し、返される属性を選択してその属性を返す方法はありますか?

4

2 に答える 2

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 ファイルは、まさにこの理由から、(最初の行に列名を付けるという) この規則に従います。

于 2013-03-28T16:40:05.380 に答える
0

このタイプのデータ ファイルには packageを使用するcsvことをお勧めしますが、既存のコードでは次のようにすることができます。

columns = ['NAME', '70', 'AST', 'TYPE', 'LOCATION', '3', 'SOMETHING', 'MNUM_1', 'NUM_2', 'DESCRIPTION']
return to_search[requested_name][columns.index(requested_column)]
于 2013-03-28T16:36:44.997 に答える