4

だから私は大きなテキストファイルを持っています。次の形式で一連の情報が含まれています。

|NAME|NUMBER(1)|AST|TYPE(0)|TYPE|NUMBER(2)||NUMBER(3)|NUMBER(4)|DESCRIPTION|

あいまいで申し訳ありません。すべての情報は上記のようにフォーマットされており、各記述子の間にはセパレータ「|」があります。この例のように、「NAME」のファイルを検索し、各記述子を独自のタグに出力できるようにしたいと考えています。

Name
Number(1):
AST:
TYPE(0):
etc....

まだ混乱している場合は、名前を検索して、「|」で区切られたそれぞれに続く情報を出力できるようにしたいと考えています。

誰でも助けることができますか?

編集テキストファイルの一部の例を次に示します。

|トレバー・ジョーンズ|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]))
4

2 に答える 2

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])

警告の言葉ですが、このソリューションは、名前が一意であると想定していますが、そうでない場合は、より複雑なソリューションが必要になる場合があります。

于 2013-03-24T00:50:48.547 に答える
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')
于 2013-03-24T00:51:01.873 に答える