Ich bin überrascht, dass ich einen deutschen Umlaut in einer Regexp nicht zuordnen kann. Ich habe mehrere Ansätze ausprobiert, die meisten mit der Einstellung von Locales, aber bisher ohne Erfolg.Umlaute im Regexp-Abgleich (via locale?)
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
re.findall(r'\w+', 'abc def g\xfci jkl', re.L)
re.findall(r'\w+', 'abc def g\xc3\xbci jkl', re.L)
re.findall(r'\w+', 'abc def güi jkl', re.L)
re.findall(r'\w+', u'abc def güi jkl', re.L)
Keine dieser Versionen entspricht der Umlaut-u (ü) korrekt mit \w+
. Auch das Entfernen des re.L
Flags oder das Voranstellen der Musterzeichenfolge mit u
(um es Unicode zu machen) hat mir nicht geholfen.
Irgendwelche Ideen? Wie wird die Flagge re.L
richtig verwendet?
Nein, habe ich nicht (mea culpa) mit, ich war nicht bewusst, die Existenz dieser Flagge, und es löst mein Problem! Danke, ich werde dies bald als akzeptierte Antwort kennzeichnen (es sei denn, eine ausführlichere Antwort wird auch erklären, warum meine Versuche, die Locale-Flagge zu verwenden, nicht wie erwartet funktionierten. – Alfe
Bearbeitet, um einen Link zu einem Thread zu geben, der eine Erklärung gibt. –
Wenn Sie Python 2 verwenden, verwenden Sie Unicode-Zeichenfolgen (u "..."). Das Skript UTF-8 ist eine gute Idee. Vergessen Sie die 'LOCALE'-Flagge, denken Sie daran, dass es nur für Legacy-Zeug ist Du hast keine andere Wahl. " – MRAB