看板 Python 關於我們 聯絡資訊
最近在學習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