2016-08-03 10 views
0

Gegeben eine Zeichenfolge s = "Leonhard Euler", ich muss herausfinden, ob ein Element in meinem Nachnamen-Array eine Teilzeichenfolge von s ist. Zum Beispiel:Wie finde ich heraus, ob ein Element aus einem Array ein Teilstring eines Strings ist?

s = "Leonhard Euler" 
surnames = ["Cantor", "Euler", "Fermat", "Gauss", "Newton", "Pascal"] 
if any(surnames) in s: 
    print("We've got a famous mathematician!") 
+0

Was ist die Frage? – wwii

+1

Mögliches Duplikat von [Hat Python eine Zeichenkette mit Teilstring-Methode?] (Http://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method) – Matthew

+0

Das ist nicht wie 'any 'funktioniert. Versuchen Sie 'falls vorhanden '(Nachname in s für Nachnamen in Familiennamen):' –

Antwort

1

Wenn Sie müssen nicht wissen, welche Namen in s ist, können Sie tun, dass jede und Liste Verständnis mit:

if any(surname in s for surname in surnames): 
    print("We've got a famous mathematician!") 
5

Betrachten if any(i in surnames for i in s.split()):.

Dies funktioniert sowohl für s = "Leonhard Euler" als auch s = "Euler Leonhard".

1
s = "Leonhard Euler" 
surnames = ["Cantor", "Euler", "Fermat", "Gauss", "Newton", "Pascal"] 

for surname in surnames: 
    if(surname in s): 
     print("We've got a famous mathematician!") 

Loops durch jede Zeichenfolge in Namen und prüft, ob es ein Teilwort von s

0

Eigentlich habe ich nicht den Code testen, soll aber so etwas wie dies (wenn ich die Frage verstanden):

for surname in surnames: 
    if surname in s: 
    print("We've got a famous mathematician!") 
+0

Diese Implementierung wird mehrfach gedruckt, wenn mehrere Übereinstimmungen vorhanden sind. Ich denke, OP möchte nur, dass es einmal druckt, was bedeutet, dass Sie aus der Schleife ausbrechen müssen, wenn Sie eine Übereinstimmung finden. – Harrison

2

Sie können das isdisjoint-Attribut von Sätzen nach dem Aufteilen der Zeichenfolge in die Liste verwenden, um zu überprüfen, ob die beiden Listen, die in Sätzen enthalten sind, Elemente gemeinsam haben.

s = "Leonhard Euler" 
surnames = ["Cantor", "Euler", "Fermat", "Gauss", "Newton", "Pascal"] 

strlist = s.split() 
if not set(strlist).isdisjoint(surnames): 
    print("We've got a famous mathematician!") 
Verwandte Themen