Seite 1 von 1
Stringvergleichen mit Sonderzeichen
Verfasst: Sonntag 19. Dezember 2004, 19:48
von rayo
Hi
Ich wollte mal Fragen wie ihr folgendes lösen würdet:
2 Strings miteinander vergleichen, jedoch sollen Sonderzeichen ignoriert werden oder umgewandelt werden.
Also mal ein paar Sonderzeichen zur erklärung
Code: Alles auswählen
ä = a = á = à = â
ö = o = ó = ò = ô
ü = u = ú = ù = û
i = î = í
e = é = è = ê
Wenn ein String solche Zeichen enthält, soll er sie wie normale behandeln (a,o,u,e,i, usw).
Soll ich die vorher einfach alle ersetzen oder irgendein RegEx dazu erstellen?
Ich weiss eben nicht ob das mit RegEx möglich ist da ich mich nicht auskenne, falls es möglich ist, würde ich RegEx noch genauer anschauen.
Gruss
Verfasst: Sonntag 19. Dezember 2004, 20:52
von Leonidas
Ich würde es einfach ersetzen, mit regexes kenne ich mich nicht aus, aber
hier mal ein Howto zum re Modul. Dann kann ich mir ja für die Ferien was vornehmen: regexes lernen

Verfasst: Montag 20. Dezember 2004, 08:05
von jens
Also mit dem normalen .replace() benötigt man allerdings einige anläuft, bis alle Varianten eines Buchstabend "normalisiert" werden...
Mit RE kann man man allerdings quasi eine "oder"-Verknüpfung machen: [äaáàâ]
Wie man jetzt aber konkret ein re.sub() forumliert, welches alle Varianten in einem "konvertiert" weiß ich jetzt so nicht...
Verfasst: Montag 20. Dezember 2004, 13:38
von Leonidas
Na ich würd mal so versuchen:
Code: Alles auswählen
import re
pattern = re.compile('[äaáàâ]+', re.IGNORECASE)
stringreplace = "äaáàâ"
print re.sub(pattern, 'a', stringreplace)
Kenn jemand eine gute regex Doku? Da gibt es doch so ein hübsches O'Reilly Buch, aber sonst?
Verfasst: Montag 20. Dezember 2004, 14:06
von powerslide
Verfasst: Montag 20. Dezember 2004, 14:38
von joe
Eigentlich ist das doch eher was für string.translate():
Code: Alles auswählen
import string
s = """ä = a = á = à = â
ö = o = ó = ò = ô
ü = u = ú = ù = û
i = î = í
e = é = è = ê"""
print s.translate(string.maketrans('äáàâöóòôüúùûîíéèê','aaaaoooouuuuiieee'))
Ausgabe:
a = a = a = a = a
o = o = o = o = o
u = u = u = u = u
i = i = i
e = e = e = e
joe
Verfasst: Montag 20. Dezember 2004, 14:58
von rayo
Hi
also Translate klingt recht vernünftig, ich werde wahrscheinlich das verwenden.
Danke
Verfasst: Montag 20. Dezember 2004, 17:31
von jens
joe hat geschrieben:Eigentlich ist das doch eher was für string.translate():
Das kenne ich ja noch garnicht! Was es nicht alles gibt...
Wie schnell ist es gegenüber .replace() und RE ???
Verfasst: Montag 20. Dezember 2004, 17:37
von Leonidas
Müssen wir mal benchmarken - ich werd mir gleich mal ein Benchmark schreiben
