[問題] regular expression with utf-8

看板Python作者 (hsnugo)時間15年前 (2010/06/03 11:22), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
最近在學習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

06/03 15:15, , 1F
把~當做兩個byte那你就要用|來分隔(-|~|~)
06/03 15:15, 1F

09/05 11:09, , 2F
程式碼第一行加#-*- coding:utf-8 -*-
09/05 11:09, 2F

09/05 11:11, , 3F
程式中,"~"就會直接被解譯為\xef\xbd\x9e
09/05 11:11, 3F
文章代碼(AID): #1C1n_yla (Python)
文章代碼(AID): #1C1n_yla (Python)