Warum funktioniert mein regulärer Ausdruck nicht? Ich brauche Python 2.7.5. Das ist mein Ausdruck:Regulärer Ausdruck mit Umlauten in Python 2.7.5
pattern = re.compile('\d{4};[a-zA-ZäöüÄÖÜß. -]+;.+')
ich eine CSV-Datei zu lesen. Am Anfang muss es 4 Ziffern geben bis eine ;
, und bis die 2. ;
gibt es Buchstaben von a-Z, Umlaute und .
oder ein Leerzeichen oder .
, dann nach der 2. ;
kann es Zeichen geben.
Jetzt mein Problem: Im zweiten "Teil" akzeptiert es keine Umlaute wie äöü
oder ß
. Im dritten "Teil", wo ich die Umlaute nicht spezifiziere, ist es kein Problem, wenn sie auftreten.
Ich habe # -*- coding: utf-8 -*-
am Anfang des Skripts gesetzt.
Danke Mann, das hat funktioniert !!! Ich habe seit ein paar Tagen mit diesem Problem zu kämpfen. –
sollte das nicht 'ru' \ d {4} ... ''(für eine Raw-Unicode-String) sein? – thebjorn
@thebjorn: es muss * nicht * sein; Ein Raw-String-Literal ist nur eine andere Syntax für das gleiche Ergebnis. In diesem Fall bleibt "\ d" im resultierenden Wert "\ d". In Python 3 gibt es kein 'ru'-Präfix, also für mehrsprachigen Code (Code, der auf Python 2 und Python laufen muss), so dass ich dieses Präfix nicht verwende. –