2016-03-30 20 views
0

Ich möchte in der Lage sein, alle Positionen zu identifizieren, an denen ein Wort in einem Satz erscheint.Finden Sie alle Vorkommen eines Wortes in einer Liste?

Zum Beispiel: Hallo mein Name ist Ben und sein Name ist Fred.

Wenn ich Eingabe ‚name‘ es zurückgeben sollte: Dieses Wort kommt in den Orten: 3 und 8

Unten ist mein Code aber es wird nur den ersten Wert zurück.

text = input('Please type your sentence: ') 
sentence = text.split() 
word= input('Thank-you, now type your word: ') 

if word in sentence: 
      print ('This word occurs in the places:', sentence.index(word)+1) 
elif word not in sentence: 
      print ('Sorry, '+word+' does not appear in the sentence.') 
+0

Dies ist ein Duplikat von http://stackoverflow.com/questions/6294179/how-to-find-all-occurrences-of-an-element-in-a-list –

Antwort

2

Dieses Verständnis sollte es tun:

[i+1 for i, w in enumerate(sentence) if w == word] 

(+1, weil Sie erstes Wort wollen 1 nicht 0 sein)

Voll Beispiel:

text = input('Please type your sentence: ') 
sentence = text.split() 
word = input('Thank-you, now type your word: ') 

if word in sentence: 
    print ('This word occurs in the places:') 
    print([i+1 for i, w in enumerate(sentence) if w == word]) 
elif word not in sentence: 
    print ('Sorry, ' + word + ' does not appear in the sentence.') 
+0

Ich habe gerade festgestellt, dass dies bereits hier beantwortet wurde : http://stackoverflow.com/a/6294205/4653485 –

+0

Vielen Dank, aber in der Komprimierung muss ich die Variable 'Wort' als die Zeichenfolge 'Name' verwenden. Dies ist so ein Benutzer kann jedes Wort eingeben, um eine Übereinstimmung zu finden? –

+0

Rechts. Ich habe meine Antwort bearbeitet, um das Problem zu beheben. Ich habe das Verständnis nur an einem vereinfachten Beispiel getestet, nicht am gesamten Code. –

1

Sie können erreichen Sie dies mit einem einfachen Listenverständnis und einer Aufzählungsfunktion, um den Index zu finden. Fügen Sie schließlich 1 hinzu, um Ihren erwarteten Index zu erreichen.

sec = 'Hello my name is Ben and his name is Fred.' 
search = input('What are you looking for? ') 
print ([i + 1 for i, s in enumerate(sec.split()) if s == search]) 
+0

Ja, das kannst du tun. Nehmen Sie einfach eine Eingabe vom Benutzer und speichern Sie eine Variable und später können Sie sie für den Vergleich verwenden. Siehe den korrigierten Code. – Muctadir

0

Sie können es nicht mit einem Wenn tun. Sie müssen eine Schleife, wie dieses:

occurrences = [] 

for word in sentence: 
    if word == target_word: 
     occurrences.append(sentence.index(word)+1) 

Sie alle Vorkommen ‚Vorkommen‘ im Array Ihr Satz zu drucken oder Sie können für einen ‚Druck‘ Satz, als Ihre Präferenz ‚Vorkommen‘ ändern.

Bitte beachten Sie, dass ich diesen Code nicht ausgeführt habe, überprüfen Sie, ob es richtig geschrieben ist.

Viel Glück!

Verwandte Themen