Prüfen, ob Element in Liste enthalten ist

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TomBombadil
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 17:29

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
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
TomBombadil
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 17:29

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!!!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten