Sono sorpreso di non essere in grado di associare un'umlaut tedesca a un'espressione regolare. Ho provato diversi approcci, la maggior parte coinvolgendo impostazioni locali, ma fino ad ora senza successo.Umlauts in corrispondenza di espressioni regolari (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)
Nessuna di queste versioni corrisponda al dieresi-u (u) correttamente con \w+
. Anche la rimozione del flag re.L
o il prefisso della stringa del modello con u
(per renderlo unicode) non mi ha aiutato.
Qualche idea? Come viene utilizzata correttamente la bandiera re.L
?
No, non l'ho fatto (mea culpa), non ero a conoscenza del esistenza di quella bandiera, e risolve il mio problema! Grazie, la contrassegnerò come risposta accettata al più presto (a meno che una risposta più elaborata spieghi anche perché le mie prove utilizzando solo la bandiera locale non funzionassero come previsto. – Alfe
Modificato per fornire un collegamento a una discussione fornendo alcune spiegazioni. –
Se stai usando Python 2, usa le stringhe Unicode (u "..."). Creare lo script UTF-8 è una buona idea. Dimentica il flag 'LOCALE', pensa che sia solo per le cose legacy (quando non hai altra scelta) – MRAB