我的代码从静态网站获取字符串列表。
然后遍历列表中的每个字符,并使用.replace方法替换任何非utf-8字符:
foo.replace('\\u2019', "'")
它没有正确替换列表中的字符,最终看起来如下所示:
前
u'What\u2019s with the adverts?'
后
u'What\u2019s with the adverts?'
为什么
答案 0 :(得分:1)
Python 2.7将字符串文字解释为ASCII,而不是unicode,因此即使您尝试在参数中包含unicode字符foo.replace
,replace
只是看到ASCII {{1} }}。这是因为Python没有为{'\', 'u', '2', '0', '1', '9'}
赋予特殊含义,除非它正在解析unicode文字。
要告诉Python 2.7这是一个unicode字符串,你必须在字符串前面添加一个"\u"
,就像在u
中一样。
此外,为了指示unicode代码的开始,您需要foo.replace(u'\u2017', "'")
,而不是\u
- 后者表示您希望字符串中的实际\\u
后跟一个'\'
。
最后,请注意'u'
不会因调用foo
而发生变化。相反,replace
将返回一个必须分配给新变量的值,如下所示:
replace
(参见stackoverflow.com/q/26943256/4909087)
答案 1 :(得分:-2)
耶。如果您的字符串foo = r'What\u2019s with the adverts?'
可以使用foo.replace('\\u2019', "'")
。它是一个原始字符串,以r'开头。和你在一起''是Unicode。
希望能帮到你。