找到this question的答案后,我们将面临下一个不寻常的替换行为:
我们的正则表达式是:
[\\((\\[{【]+(\\w+|\\s+|\\S+|\\W+)?[)\\)\\]}】]+
我们正在尝试匹配任何类型方括号内的所有内容,包括方括号 原文是:
^{pr2}$结果是:
物�研真题详解
更换代码为:
delimiter = ' '
if localization == 'CN':
delimiter = ''
p = re.compile(codecs.encode(unicode(regex), "utf-8"), flags=re.I)
columnString = (p.sub(delimiter, columnString).strip()
为什么出现?(\ufffd)字符以及如何修复这种行为?在
我们在使用regex时也面临同样的问题:
(\\d*[满|元])
print repr(columnString)='\xe5\xbd\x93\xe4\xbb\xa3\xe9\xaa\xa8\xe4\xbc\xa4\xe7\xa7\x91\xe5\xa6\x99\xe6\x96\xb9(\xe7\xac\xac\xe5\x9b\x9b\xe7\x89\x88)'
print repr(regex)=u'[\\(\uff08\\[{\u3010]+(\\w+|\\s+|\\S+|\\W+)?[\uff09\\)\\]}\u3011]+'
print repr(p.pattern)='[\\(\xef\xbc\x88\\[{\xe3\x80\x90]+(\\w+|\\s+|\\S+|\\W+)?[\xef\xbc\x89\\)\\]}\xe3\x80\x91]+'
不应将UTF-8和正则表达式混合使用。将所有文本处理为Unicode。确保先将regex和输入字符串解码为
unicode
值:在您的模式中使用UTF-8时,
^{pr2}$【
代码点由单独的字节组成:这意味着您的字符类与这些字节中的任何一个匹配;}或{}都是该字符类中分别有效的字节。在
\xe3
,或{首先对字符串进行解码,然后可以去掉这个‘(\ufffd)字符。在
相关问题 更多 >
编程相关推荐