Używam tokenizera do dzielenia zdań francuskich na słowa i miałem problemy ze słowami zawierającymi francuski znak â
.Python niezmiernie zaskakujący zachowanie unicode regex
Starałem się wyizolować problem i ostatecznie sprowadza się do tego prostego faktu:
>>> re.match(r"’", u'â', re.U)
>>> re.match(r"[’]", u'â', re.U)
<_sre.SRE_Match object at 0x21d41d0>
â
towarzyszą wzorca zawierającego ’
jeśli to umieścić w zespole dopasowującego.
Czy jest coś złego z mojej strony w zakresie obsługi UTF-8 lub czy jest to błąd?
Moja wersja Pythona:
Python 2.7.3 (default, Jan 2 2013, 13:56:14)
[GCC 4.7.2] on linux2
EDIT:
Hum, wystarczy embarassingly, wydaje się, że zastąpienie r
poprzedzając wzór z u
rozwiązuje problem.
Zastanawiam się, dlaczego oficjalna dokumentacja wykorzystuje szeroko r
następnie :((
'r' jest poprawne i ważne. Powinieneś ** dodać ** 'u' (zobacz odpowiedź) zamiast zamieniać' r'. –
@ m.buettner: Yup Edytowałem przed zobaczeniem odpowiedzi. Poszedłem dalej i sprawdziłem, co robią "r" i "u", a tak naprawdę oba są ważne. Dzięki :) – m09