🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
2 messages
2 total messages Started by Jarosław Zabiełło Tue, 14 Jan 2003 23:38
moduł re i problem z utf-8
#689
Author: Jarosław Zabiełło
Date: Tue, 14 Jan 2003 23:38
39 lines
2063 bytes
Python 2.2 ma jakieś problemy z poprawną obsługą znaków UTF-8 w w
module re. Zobaczcie jakie głupoty powstają.

Wpierw tworzę sobie próbny string z polskimi znaczkami oddzielonymi
spacją.

>>> s = 'ą ć ę ł ń ó ś ż ź'
>>> s
'\xb9 \xe6 \xea \xb3 \xf1 \xf3 \x9c \xbf \x9f'

Teraz zamieniam to na utf-8:

>>> u = unicode(s, 'cp1250').encode('utf-8')
>>> u
'\xc4\x85 \xc4\x87 \xc4\x99 \xc5\x82 \xc5\x84 \xc3\xb3 \xc5\x9b
\xc5\xbc \xc5\xba'

Próbuję wyłuskać z tego polskie znaczki:

>>> re.compile(r'(\w)', re.U).findall(u)
['\xc4', '\xc4', '\xc4', '\xc5', '\xc5', '\xc3', '\xb3', '\xc5',
'\xc5', '\xbc', '\xc5', '\xba']

Kiepsko. Python nie zrozumiał, że ma do czynienia z utf-8 mimo, że mu
ustawiłem flagę re.U

Z kolei jak zmienię wyrażenie regularne na \S czyli wszystkie znaki
oprócz spacji, tabulatora i entera, to mam jeszcze inny wynik:

>>> re.compile(r'(\S)', re.U).findall(u)
['\xc4', '\xc4', '\x87', '\xc4', '\x99', '\xc5', '\x82', '\xc5',
'\x84', '\xc3', '\xb3', '\xc5', '\x9b', '\xc5', '\xbc', '\xc5',
'\xba']

Wygląda na to, że nie można używać modułu re do wyłuskiwania tekstów w
formacie utf-8. Kiepsko. :(

-- 
JZ
Re: moduł re i problem z utf-8
#690
Author: Jarosław Zabiełło
Date: Wed, 15 Jan 2003 01:27
11 lines
1187 bytes
On Wed, 15 Jan 2003 00:38:00 +0100, Jarosław Zabiełło
<webmaster@watchtowerDOTorg.pl> wrote:

>>>> u = unicode(s, 'cp1250').encode('utf-8')

Już wiem,w czym był problem. Powinno być u = unicode(s, 'cp1250') bo
moduł re pracuje z obiektami Unicode, a nie stringami. Wszystko zatem
działa.

-- 
JZ
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads