作者hsnucsc (hsnugo)
看板Python
標題[問題] regular expression with utf-8
時間Thu Jun 3 11:22:34 2010
最近在學習python regular expression的部份
希望可以parse出類似'7~8級', '7-8級', '7~8級', '7到8級', 這類的pattern
但是發現在使用utf-8 encode的情況下
re.findall('\d+[-~~]\d+', '7~8級') 是沒辦法找到的
因為'~' = '\xe2\x88\xbc'
在[]內被視為三個不同的character
如果是Unicode re.findall(u'\d+[-~~]\d+', u'7~8級') 就可以
雖然有google到一個回應
建議不要用utf-8的byte stream做regular expression的search或match
不過因為要parse的XML檔, 讀入時的encoding方法是utf-8
想問說有沒有辦法省掉將utf-8轉成unicode的步驟
就直接使用re做parsing
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.225.18
推 ckclark:把~當做兩個byte那你就要用|來分隔(-|~|~) 06/03 15:15
推 smallyuyuyu:程式碼第一行加#-*- coding:utf-8 -*- 09/05 11:09
→ smallyuyuyu:程式中,"~"就會直接被解譯為\xef\xbd\x9e 09/05 11:11