【发布时间】:2012-05-07 15:54:15
【问题描述】:
谁能解释一下这种奇怪的行为?我希望这两种替换方法都可以同时工作或不工作。是我一个人还是有人觉得这不连贯?
>>> u'è'.replace("\xe0","")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
>>> re.sub(u'è','\xe0','',flags=re.UNICODE)
''
(请注意,我并不是要解释为什么 u'è'.replace("\xe0","") 会引发错误!)
【问题讨论】:
-
unicode.replace与re.sub方法不同。 -
当然。我的观点是,对于相同的输入,它们的行为应该一致。
-
正是这些问题导致 Python 3 中 Unicode 与字节字符串的执行更加严格。