Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 python.replace无法正常工作_Python 2.7_List_Replace_Utf 8 - Fatal编程技术网

Python 2.7 python.replace无法正常工作

Python 2.7 python.replace无法正常工作,python-2.7,list,replace,utf-8,Python 2.7,List,Replace,Utf 8,我的代码从静态网站获取字符串列表 然后遍历列表中的每个字符,并使用.replace方法替换任何非utf-8字符: foo.replace('\\u2019',“”) 它无法正确替换列表中的字符,结果如下所示: 以前 u'What\u2019s与广告有关?' 之后 u'What\u2019s与广告有关?' 为什么Python2.7将字符串文字解释为ASCII而不是unicode,因此,即使您尝试在foo.replace的参数中包含unicode字符,replace,replace只是看到ASCII

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

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

foo.replace('\\u2019',“”)

它无法正确替换列表中的字符,结果如下所示:

以前

u'What\u2019s与广告有关?'

之后

u'What\u2019s与广告有关?'


为什么Python2.7将字符串文字解释为ASCII而不是unicode,因此,即使您尝试在
foo.replace的参数中包含unicode字符,
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'What\u2019s with the adverts?'
将符合
foo.replace('\\u2019',“')
。它是一个原始字符串,以r“”开头。与u一起使用的是Unicode。
希望能帮助您。

不是downvoter,但我想您还需要确保他们将其重新分配(鉴于OP缺乏unicode字符串知识,我可以看出这是OP的另一个潜在问题)。@cᴏʟᴅsᴘᴇᴇᴅ 我不知道你说的“分配回”是什么意思。是否将返回值赋给变量?他们清楚地看到了返回值,否则他们就不会把它们包含在答案中。如果我告诉你可能发生的事情,会更容易:@cᴏʟᴅsᴘᴇᴇᴅ 啊,好吧,那么你认为他在做这样的事情:
foo.replace('\\u2019',“”);印刷品。不会想到的;非常感谢。但是他的字符串显然不是原始的,里面有一个字母“\u”。如果是的话,为什么他的返回值是嵌入了实际unicode单引号的unicode字符串呢?使用正则表达式是一个解决方案。这是一件很容易理解的事情。:)如果使用foo.replace(u'\u2019',“”)是正确的解决方案:“如果答案不同,那就是正确的”。。。六羟甲基三聚氰胺六甲醚。。。我已经更新了我的答案,你可能想再读一遍,如果你觉得有用的话就接受它…:)。。。