Prüfen ob ein String nur Buchstaben enthält

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
zabuza_92
User
Beiträge: 1
Registriert: Mittwoch 16. Juni 2021, 15:54

Ich habe eine Liste mit Strings, wovon manche Zahlen und andere Buchstaben bzw ganze Wörter enthalten.
Ich möchte alle Strings die nur Buchstaben enthalten in eine neue Liste speichern, wie bekomme ich das hin.
Am besten ohne fertige Funktionen! :)
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Zeig mal Code, was hast du schon probiert? Was geht nicht wie es soll? etc...
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/env python3
import unicodedata


def is_just_letters(text):
    return all(
        unicodedata.category(character).startswith("L") for character in text
    )


def main():
    texts = [
        "abc",
        "not just letters",
        "23",
        "1e77er5",
        "Ⅱ",  # Roman number.
        "ⅳ",  #   "     "
        "𝝮",
        "(z)",
    ]
    just_letters_texts = list(filter(is_just_letters, texts))
    print(just_letters_texts)


if __name__ == "__main__":
    main()
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Zwangsgestörter
User
Beiträge: 20
Registriert: Freitag 23. Oktober 2020, 19:00

Nach reichlicher Überlegung gehe ich mir jetzt erst mal einen Kaffee holen.

Kann das mal jemand löschen?
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

__blackjack__ hat geschrieben: Mittwoch 16. Juni 2021, 19:52

Code: Alles auswählen

#!/usr/bin/env python3
import unicodedata

def is_just_letters(text):
    return all(
        unicodedata.category(character).startswith("L") for character in text
    )
Hm, ich hätte vermutlich eher an so etwas wie

Code: Alles auswählen

all([char.isalpha() for char in some_string])
gedacht...
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

isalpha() funktioniert auch für mehrere Zeichen. Es prüft, ob alle Zeichen Buchstaben sind. Das braucht man also nicht nachzubauen.

Zum Testen für alle Wörter:

Code: Alles auswählen

all(word.isalpha() for word in text.split())
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

snafu hat geschrieben: Freitag 18. Juni 2021, 18:11 isalpha() funktioniert auch für mehrere Zeichen. Es prüft, ob alle Zeichen Buchstaben sind. Das braucht man also nicht nachzubauen.
True, Du hast Recht. ;-)
Antworten