作者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
1F:推 ckclark:把~当做两个byte那你就要用|来分隔(-|~|~) 06/03 15:15
2F:推 smallyuyuyu:程式码第一行加#-*- coding:utf-8 -*- 09/05 11:09
3F:→ smallyuyuyu:程式中,"~"就会直接被解译为\xef\xbd\x9e 09/05 11:11