python .replace 无法正常工作



我的代码从静态网站获取字符串列表。

然后,它遍历列表中的每个字符,并使用 .replace 方法替换任何非 utf-8 字符:

foo.replace('\u2019', "'")

它不会正确替换列表中的字符,最终如下所示:

以前

u'Whatu2019s with the adverts?'

u'Whatu2019s with the adverts?'

为什么会这样

Python 2.7 将字符串文字解释为 ASCII,而不是 unicode,因此即使您尝试在参数中包含 unicode 字符以foo.replacereplace也只是看到 ASCII {'', 'u', '2', '0', '1', '9'}。这是因为 Python 不会为"u"赋予特殊含义,除非它解析的是 unicode 文字。

要告诉 Python 2.7 这是一个 unicode 字符串,您必须在字符串前面加上 u ,如 foo.replace(u'u2017', "'") .

此外,为了指示 unicode 代码的开头,您需要 u ,而不是\u - 后者表示您希望字符串中有一个实际的'',后跟一个'u'

最后,请注意,foo不会因调用 replace 而更改。相反,replace将返回一个值,您必须将其分配给新变量,如下所示:

bar = foo.replace(u'u2017', "'")
print bar

(见 stackoverflow.com/q/26943256/4909087(

是的。如果您的字符串是foo = r'Whatu2019s with the adverts?'则可以使用foo.replace('\u2019', "'").它是一个原始字符串,以 r'' 开头。和你在一起''是Unicode。 希望对您有所帮助。

最新更新