Kontrollieren, ob ein String mindestens 3 Buchstaben enthält (Python)?

2 Antworten

Da hilft nur ein Counter innerhalb einer Schleife, welche jeden Character einzeln auf "[A-ZÄÖÜa-zäöüß]" oder "[:letter:]" (RegExp) prüft.


MarkusGenervt  11.11.2017, 12:06

Ich kenne mich jetzt nicht wirklich mit Python aus und musste mal eben nachschauen, aber es sollte so funktionieren:

import re
username = "blob1234";
n = 0;
for c in username:
if re.match("[A-ZÄÖÜa-zäöüß]", c):
n +=1
if (n >= 3):
print "Username hat mindestens 3 Buchstaben."
else:

print "Username hat weniger als 3 Buchstaben."

Hat mich gerade doch selbst mal interessiert ;)

0
Niction 
Fragesteller
 11.11.2017, 12:17
@MarkusGenervt

Funktioniert wirklich, interessant :D. Danke dir. Aber wie genau funktioniert das Prinzip mit

re.match("[A-ZÄÖÜa-zäöüß]", c
0
MarkusGenervt  11.11.2017, 12:36
@Niction

"re" ist ein Regular Expression Objekt (kurz "RegExp").

RegExp ist ein Zeichenfolgen-Vergleichs-Modul, was sehr viel komplexere String-Vergleiche ermöglicht als nur "gleich" oder "ungleich".

Hier mal einige Beispiele:

Text = "Dies ist 1 Text von 2."

Jetzt kannst Du mit alten Text-Suchen z.B. nur nach "1" oder "2" suchen, aber nicht nach irgend einer Zahl. Mit RegExp findest Du mit diesen Suchmustern alle Zahlen:

Suche = "\d"
Suche = "\d+"
Suche = "[0123456789]"
Suche = "[0-9]"
Suche = "[:digit:]+"

Das sind alles unterschiedliche Suchmuster die alle Zahlen oder Ziffern suchen und diese dann ausgeben. Alle Suchmuster repräsentieren nur eine Ziffer. Das "+" hierbei erweitert die Suche nach Strings mit einer oder mehr Ziffern. Die eckigen Klammern umschließen eine Auswahlmöglichkeit. Der letzte Ausdruck funktioniert nicht in allen RegExp-Maschinen, bietet aber eine universellere Option in Deinem Fall ("[:letter:]"), welche nicht nur das deutsche Alphabet umfasst, sondern alle (also auch z.B. "[éđĸłæ]").

Schau Dir mal im Netz die RegExp-Tutorials an. Man kann noch viel mehr damit machen und richtig genutzt ist das schon fast eine eigene Skriptsprache.

0

Geht easy über "len"

if len(username)<3.....

Len gibt die Länge eines strings in Zeichen aus


Niction 
Fragesteller
 11.11.2017, 12:11

Jo, das kontrollieren ich auch schon und gucke auch ob der Name nur ein Zahlen besteht mit .isdigit(), aber ich wollte auch zusätzlich noch kontrollieren, ob der eingegebene Name aus mindestens 3 Buchstaben besteht :S.

0
Mirse87  11.11.2017, 12:31
@Niction

Kannst du ja. mach einfach zwei abfragen in eine verschachtelte if-abfrage. Also if len(username)>3 um deine .isdigit schleife rum und als else die "Fehlermeldung"

0
MarkusGenervt  11.11.2017, 12:41
@Mirse87

Die Negation von "isdigit()" beinhaltet auch alle anderen Zeichen außer den Zahlen, also auch Interpunktion, Smileys, mathematische Operatoren, etc., etc., etc.

Der Unicode-Satz umfasst 65.535 Zeichen und nur 10 davon werden durch "isdigit()" abgedeckt. Aber nicht alle restlichen 65.525 Zeichen sind Buchstaben!

0
Mirse87  11.11.2017, 12:42
@MarkusGenervt

Okay so genau hab ich mir isdigit nicht angesehen. Nie damit gearbeitet^^
Würde sagen der genervte Markus hilft dir ab hier weiter.

0
MarkusGenervt  11.11.2017, 14:56
@Mirse87

Ehrlich, bei solchen Technik-Fragen bin ich immer t-o-t-a-l tiefen-entspannt.

Da geht's ja auch nicht um "Meinungen".

(^,^)

1