Seite 1 von 1

Prüfen, ob Element in Liste enthalten ist

Verfasst: Dienstag 9. Juli 2019, 17:53
von TomBombadil
Hallo zusammen,

es ist mir zwar furchtbar peinlich, aber ich habe derzeit tatsächlich in Problem mit der Frage, ob ein Element in einer Liste enthalten ist.
Ich beschäftige mich derzeit ein wenig mit Strings und wollte daher untersuchen, ob ein String Satzzeichen enthält, die ich bei der weiteren Arbeit mit ebenjenem String beachten müsste und habe daher folgenden Test-Code fabriziert:

Code: Alles auswählen

def satzzeichen_enthalten(text):
    satzzeichen = ['.', ',' '!', '?']
    text_liste = text.split()
    for element in text_liste:
        for buchstabe in element:
            if buchstabe in satzzeichen:
                print('Treffer')
             if buchstabe == ',':
                print('Komma')    

test = 'I like, Python !'

satzzeichen_enthalten(test)
Nur habe ich jetzt das Problem, dass

Code: Alles auswählen

if buchstabe in satzzeichen:
	print("Treffer")
einfach nicht auslöst und ich nicht weiß, warum nicht ... Wenn ich die Buchstaben einzeln auswerte (siehe darunter), wird die Abfrage richtig ausgewertet ...

Kann mir vielleicht jemand kurz erläutern, was ich falsch mache?

Vielen Dank und Entschuldigung für die "dumme" Frage.

Viele Grüße
TomBombadil

Re: Prüfen, ob Element in Liste enthalten ist

Verfasst: Dienstag 9. Juli 2019, 18:32
von kbr
Tja, ich würde sagen, Dir fehlt ein Komma in 'satzzeichen'. Einfacher wäre es zu testen, ob die 'satzzeichen' im Text sind, und nicht, ob jeder Buchstabe im Text in 'satzzeichen' ist. Jedenfalls bei Texten, die mehr Zeichen enthalten, als Satzzeichen vorhanden sind.

Re: Prüfen, ob Element in Liste enthalten ist

Verfasst: Dienstag 9. Juli 2019, 18:45
von TomBombadil
kbr hat geschrieben: Dienstag 9. Juli 2019, 18:32 Tja, ich würde sagen, Dir fehlt ein Komma in 'satzzeichen'. Einfacher wäre es zu testen, ob die 'satzzeichen' im Text sind, und nicht, ob jeder Buchstabe im Text in 'satzzeichen' ist. Jedenfalls bei Texten, die mehr Zeichen enthalten, als Satzzeichen vorhanden sind.
Oh Gott, und ich dachte schon, die Frage sein peinlich!
Ja, das ist mir bei den gazen Hochkommata und Satzzeichen irgendwie durchgegangen!
Vielen Dank!!!

Re: Prüfen, ob Element in Liste enthalten ist

Verfasst: Mittwoch 10. Juli 2019, 07:53
von Hyperion
Ich denke mit einem Set ist es effizienter (wobei das mutmaßlich nicht ins Gewicht fällt):

Code: Alles auswählen

In [1]: tokens = {".", ",", "!", "?"}

In [2]: phrase = "Aufgedreht! Aufgedreht! Seid ihr bereit für den Sound vom Roller?"

In [3]: any(c in tokens for c in phrase)
Out[3]: True

In [4]: phrase = "It's the first page of the second chapter"

In [5]: any(c in tokens for c in phrase)
Out[5]: False