2017-06-29 5 views
1

私がリストを持っている:検索エントリ

names = ['Jim','Billy','Diana'] 

私はそれぞれの行があるファイルがあります:

'Jim', 'Billy', 'Diana' 
'Diana' 
'Billy', 'Diana' 

Jim and Billy went to see Diana. 
Diana was at the Mall. 
Billy and Diana are siblings. 

を私が見えるように、出力ファイルが必要

これは私がうまくいかないものです:

f = open("storyfile.txt","r") 
names = ['Jim','Billy','Diana'] 
for line in f: 
    if names in line: 
    print(names) 
f.close() 

これが返されます。

私は違っやって何ができるか
TypeError: 'in <string>' requires string as left operand, not list 

わかりません。

答えて

1

if names in lineを実行すると、配列全体が単一の文字列内にあるかどうかをプログラムに指示しています。比較できないので、それは文句を言います。

あなたはあまりにも検索することができ、別の言葉にファイルから各行を分割することをお勧めします:

for line in f: 
    for word in line.split(" "): 
    if word in names: 
     print(word + ","), 
    print("\n") 

出力:

Jim, Billy, 
Diana, 
Billy, Diana, 

それは余分なコンマであなたを残しておきます各印刷ラインの終わりには、私はそれを取り除くためにいくつかの論理を理解することができると確信しています...

0
f = open("storyfile.txt","r") 
names = ['Jim','Billy','Diana'] 
for line in f: 
    print([name for name in names if name in line]) 
f.close() 
関連する問題