我的代码从静态网站获取字符串列表。
然后,它遍历列表中的每个字符,并使用 .replace 方法替换任何非 utf-8 字符:
foo.replace('\u2019', "'")
它不会正确替换列表中的字符,最终如下所示:
以前
u'Whatu2019s with the adverts?'
后
u'Whatu2019s with the adverts?'
为什么会这样
Python 2.7 将字符串文字解释为 ASCII,而不是 unicode,因此即使您尝试在参数中包含 unicode 字符以foo.replace
,replace
也只是看到 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。 希望对您有所帮助。