Python buchstaben zählen?

3 Antworten

s = 'Das ist das Haus vom Ni-ko-laus. :)'
l = len(list(c for c in s if c.isalpha()))

"s" enthält deinen String, "l" hingegen die Anzahl der Buchstaben. :)

Alternativ:

l = len(list(filter(lambda c: c.isalpha(), s)))

Je nachdem was du schöner findest. :)

PS: Noch eine "clevere" Möglichkeit wäre das hier:

l = sum(map(lambda c: c.isalpha(), s))

Diese Letzte ist mit Abstand die effizienteste Methode. Die anderen beiden obigen Methoden sind auch nicht schlecht, aber gerade die anderen Beispiele der anderen Antworten sind ineffizient, und bringen einen riesigen Overhead an Speicherverbrauch und Laufzeit mit sich. Außerdem werden sie nicht zuverlässig funktionieren ... enthalten also Bugs.

Ich denke, die letzte Methode in meiner Antwort hier, ist mit Abstand die beste. :)

TeeTier  22.01.2016, 23:35

PS: Habe gerade den Kommentar in der anderen Antwort gelesen, in dem es um Umlaute ging.

Da c.isalpha() in meiner Antwort automatisch auch Umlaute berücksichtigt, sind dabei keine weiteren Anpassungen notwendig! :)

0
from string import ascii_letters
a =  input('Text': ')
print(f'{a} beinhaltet {sum([a.count(Nr) for Nr in ascii_letters])} Buchstaben.')

Gibt mehrere Möglichkeiten (wie immer).

Wenn du nur Leerzeichen entfernen möchtest, könntest du soetwas machen:

text = "Das ist ein Test"
print (len(text.replace(" ", "")))

Wenn du aber NUR Buchstaben haben möchtest (ohne Zeichen wie !?/ usw.) könntest du einfach einen Regex verwenden

import re

text = "Das ist ein Test !!!?._,"
regex = re.compile('[^a-zA-Z]')

print(len(regex.sub('', text)))

Bin allerdings kein Python-Experte. Daher wirst du wahrscheinlich noch schönere Lösungen bekommen :)

Jo9777 
Fragesteller
 22.01.2016, 13:36

:D danke für die schnelle Antwort, ich finde die Lösung super, einfach verständlich für mich, bin kompletter Python newbie

1