正则表达式和unicode文字

2024-09-28 05:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用如下正则表达式从字符串(字节字符串或unicode字符串)中删除一些字符:

pattern = re.compile(ur'\u00AE|\u2122', re.UNICODE)

如果将字符指定为unicode文本,则结果regexp无法在字节字符串上正常工作。在

q = 'Canon\xc2\xae  EOS  7D'
pattern.sub('', q)  # 'Canon\xc2  EOS  7D'

但是,如果我将替换的参数转换为unicode字符串,它将按预期工作。。。在

^{pr2}$

有人能解释一下为什么会这样吗?在

谢谢

彼得


Tags: 字符串文本re字节unicode字符patterncompile
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:02

因为标准(字节)字符串不是Unicode字符串。Python不知道它是用什么编码的(或者根本不知道是Unicode!),因此无法确定特定Unicode字符是否与其中的某个字符匹配。解决方案是使用unicode()函数告诉Python它是Unicode,正如您所发现的那样。在

相关问题 更多 >

    热门问题