2011-10-21 10 views
0

ここに問題がありますので、うまくいけば助けてもらえます。テキストファイルのすべての行の文字列を検索する:Python

私は、各行にID番号と一連の「記述子」を持つテキストファイルを持っています。記述子は、各行に対して一意であってもなくてもかまいません(文書全体で複数回使用できます)。

私は基本的に特定のディスクリプタを含むすべてのID番号を識別したいと思います...私のコードは動作していますが、ディスクリプタのすべてではなく最初のオカレンスのみを検出します。クイックフィックス?

すべてのディスクリプタは既にリストにあります。テキストファイルの 例:

ID_45555 (tab) some irrelevant data (tab) **DESCRIPTOR1** DESCRIPTOR2 DESCRIPTOR3 

ID_55555 (tab) some irrelevant data (tab) DESCRIPTOR200 **DESCRIPTOR1** DESCRIPTOR599 

コード:

for line in file: 
    line = line.strip() 
    line = line.split("\t") 
    IDNUMBER = line[0] 
    DESCRIPTOR = line[2] 
    for x in total_list: 
     if x in DESCRIPTOR: 
      print x, DESCRIPTOR 

答えて

0

私はキーとして記述子と値と対応するIDが、このために辞書を使用してお勧めしたいです。あなたはファイルを調べ、各行で、各記述子の下の辞書に書かれたリストにIDを追加します。例:

by_descriptors = collections.defaultdict(list) 
for line in file: 
    id, _, descriptors = line.strip().split("\t") 
    for d in descriptors.split(): 
     by_descriptors[d].append(id) 
# to find all IDs for a given descriptor: 
by_descriptors.get(id, []) 
関連する問題