Nur bestimmte Zeichen in einem String erlauben

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
Volano

Dienstag 22. Juli 2003, 11:49

Hallo,

wie kann ich nur bestimmte Zeichen in einem String erlauben?
z.b.: möchte ich nur diese erlauben: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

wie mach ich das am besten?
Bugfix
User
Beiträge: 30
Registriert: Mittwoch 9. Juli 2003, 15:58

Dienstag 22. Juli 2003, 12:26

Generell wüßte ich keine Methode :roll: - allerdings könntest du einen kleinen Umweg gehen.

Das sollte mit .replace funktionieren, etwa so :
stringname.replace("ö","oe")
stringname.replace("!","")
Dabei wird z.b. ö mit oe und beim zweiten ! mit "" (fällt weg) ersetzt.

Ist natürlich etwas mehr arbeit.

Ob das stringname.replace ("!", "#", "") - also die ersten Zeichen 'löschen', funktioniert weis ich nicht genau. Aber über die Funktion würde ich mich versuchen schlau zu machen.

Gruß,
Bugfix
Volano

Dienstag 22. Juli 2003, 12:36

mhhm.. ich dachte da eher an ein RegEx oder so, weil das für mich irgendwie die "sauberste" Methode ist. Leider bin ich in RegEx eine Null :)
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Dienstag 22. Juli 2003, 12:37

Wie meinst du erlauben? Bei Benutzereingaben? Oder allgemein?

Du kannst alle anderen zeichen auch einfach aus dem String löschen lassen:

Code: Alles auswählen

from re import sub
def loesche(text=""):
    return sub('[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890]', '', text)
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Dienstag 22. Juli 2003, 12:41

Volano hat geschrieben:wie kann ich nur bestimmte Zeichen in einem String erlauben?
Was meinst Du mit erlauben? Dass bei einer Zuweisung wie s = "asdfäöüß1234" nicht erlaubte Zeichen in s landen, wirst Du nicht verhindern können (außer Du schreibst Dir Deine eigene String-Klasse). Oder willst Du nur prüfen, ob ein String unerlaubte Zeichen enthält? Da gäbe es einige Möglichkeiten. Guck mal unter http://python.sandtner.net/viewtopic.php?t=548. Da gab es einige Anregungen.

Ansonsten mach nochmal genauere Angaben, was Du in welchem Kontext machen willst.

Jan
Qbi
User
Beiträge: 57
Registriert: Mittwoch 25. Juni 2003, 14:04
Kontaktdaten:

Dienstag 22. Juli 2003, 13:26

Milan hat geschrieben:

Code: Alles auswählen

from re import sub
def loesche(text=""):
    return sub('[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890]', '', text)
Wobei hier IMHO

Code: Alles auswählen

[[:alpha:]]
besser geeignet ist, um alle Buchstaben von A bis Z darzustellen.
Jens Kubieziel http://www.kubieziel.de
http://www.kubieziel.de/pythonwiki/
Volano

Dienstag 22. Juli 2003, 14:00

Vielen Dank!

es hat so geklappt:
search(r"^[A-Z,a-z,0-9]{" + str(len(UserNick)) + "}$", UserNick)

Grüße, Volano
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Dienstag 22. Juli 2003, 14:19

Hallo!
Volano hat geschrieben:search(r"^[A-Z,a-z,0-9]{" + str(len(UserNick)) + "}$", UserNick)
So werden aber auch Nicks mit einem Komma drin erkannt. Das in den eckigen Klammern gilt als Zeichenmenge.

Einfacher:
search(r"[A-Za-z0-9]*$", UserNick)

Jan
Antworten