Python buchstaben zählen?

... komplette Frage anzeigen

3 Antworten

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

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Jo9777
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
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. :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 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
count = 0
for elem in text: 
    if elem != " " :
    #leertaste zwischen den Anführungsstrichen
        count += 1
print(count)
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von askfreak7
26.01.2016, 08:30

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

0

Was möchtest Du wissen?