2017-06-29 3 views
1

Ich habe eine Liste:Finding Einträge aus Liste in Strings

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

Ich habe eine Datei, in der jede Zeile ist:

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

Ich brauche die Ausgabedatei aussehen:

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

Hier ist, was ich habe, die nicht funktioniert:

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

Das gibt:

TypeError: 'in <string>' requires string as left operand, not list 

nicht sicher, was ich anders machen könnte.

Antwort

1

Wenn Sie if names in line tun, weisen Sie Ihr Programm an, um zu sehen, ob das gesamte Array innerhalb einer einzigen Zeichenfolge ist ... ein Vergleich kann es nicht machen, und so beschwert es sich.

Sie werden jede Zeile aus der Datei in einzelne Wörter teilen möchten, die Sie auch suchen:

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

Ausgang:

Jim, Billy, 
Diana, 
Billy, Diana, 

Das wird Sie mit einem zusätzlichen Komma verlassen am Ende jeder gedruckten Zeile, aber ich bin sicher, dass Sie einige Logik herausfinden können, um das loszuwerden ...

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() 
Verwandte Themen