我想使用如下正则表达式从字符串(字节字符串或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}$有人能解释一下为什么会这样吗?在
谢谢
彼得
因为标准(字节)字符串不是Unicode字符串。Python不知道它是用什么编码的(或者根本不知道是Unicode!),因此无法确定特定Unicode字符是否与其中的某个字符匹配。解决方案是使用
unicode()
函数告诉Python它是Unicode,正如您所发现的那样。在相关问题 更多 >
编程相关推荐