python .replace无法正常工作

时间:2018-04-30 15:11:29

标签: python-2.7 list replace utf-8

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

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

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

它没有正确替换列表中的字符,最终看起来如下所示:

u'What\u2019s with the adverts?'

u'What\u2019s with the adverts?'

为什么

2 个答案:

答案 0 :(得分:1)

Python 2.7将字符串文字解释为ASCII,而不是unicode,因此即使您尝试在参数中包含unicode字符foo.replacereplace只是看到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。 希望能帮到你。