Python buchstaben zählen?

5 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. :)

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 :)

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

1
count = 0
for elem in text: 
    if elem != " " :
    #leertaste zwischen den Anführungsstrichen
        count += 1
print(count)

Auf dem Tablet bekomme ich nicht mehrere Zeilen Code in eine Box ^^

0

Du könntest den Text in ASCII umwandel und jeden Buchstaben in ner Liste speichern. Dann einfach alles Leerzeichen entfernen und jetzt die Länge der Liste ermitteln.

Was möchtest Du wissen?