Python 上的正则表达式在使用 char class 时打印垃圾
Regex on Python prints Garbage when use char class
Python 2.7
我正在处理一个 utf-8 编码的文件(希腊语),regex
似乎有一些问题。
当我不使用 char class 时,Regex
似乎工作正常。当我这样做时:
text = re.sub('αυ','kk',text,flags=re.UNICODE)
一切正常,例如“αυτιì”将转换为 'kkτιά'。
但是,当我想像这样使用 char class 时:
text = re.sub('αυ[τ]','kk',text,flags=re.UNICODE)
显示垃圾字符,'αυτιì'被转换为'kk�ia'。
是编码问题还是我的 regex
有问题?不好意思,我对 regex
的心态还很陌生。
谢谢!
传递 unicode 对象而不是字符串:
>>> print re.sub('αυ[τ]', 'kk', 'αυτιά', flags=re.UNICODE)
kk▒ιά
>>> print re.sub(u'αυ[τ]', u'kk', u'αυτιά', flags=re.UNICODE)
kkιά
Python 2.7
我正在处理一个 utf-8 编码的文件(希腊语),regex
似乎有一些问题。
Regex
似乎工作正常。当我这样做时:
text = re.sub('αυ','kk',text,flags=re.UNICODE)
一切正常,例如“αυτιì”将转换为 'kkτιά'。
但是,当我想像这样使用 char class 时:
text = re.sub('αυ[τ]','kk',text,flags=re.UNICODE)
显示垃圾字符,'αυτιì'被转换为'kk�ia'。
是编码问题还是我的 regex
有问题?不好意思,我对 regex
的心态还很陌生。
谢谢!
传递 unicode 对象而不是字符串:
>>> print re.sub('αυ[τ]', 'kk', 'αυτιά', flags=re.UNICODE)
kk▒ιά
>>> print re.sub(u'αυ[τ]', u'kk', u'αυτιά', flags=re.UNICODE)
kkιά