2013-06-24 109 views
1

我知道在stackoverflow上有很多非ascii字符问题,但由于我是一个总的newb,所以我没有成功实现它们的运气,再加上我发现整个' unicode'概念难以理解。Python:在字符串列表中替换非ascii字符

所以我有一个名单 -

mylist = ["apple", "samsung", "toshiba", "Don’t know", "Can’t recall"] 

我想在指数3和4访问单引号,用撇号替换它们。

我尝试这样做:

# -*- coding: utf-8 -*- 
mylist = ["hello", "don't know", "Don’t know", "Can't recall"] 
for word in mylist: 
    word.replace(u"’", "'") 
print mylist 

我得到以下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3: ordinal not in range(128) 

不知道这是有用的,但我使用python 2.x版本,我知道这个问题可能如果我使用版本3,则不会发生。

谢谢!

回答

1
>>> mylist = ["apple", "samsung", "toshiba", "Don’t know", "Can’t recall"] 
>>> [item.replace('\xe2\x80\x99',"'") for item in mylist] 
['apple', 'samsung', 'toshiba', "Don't know", "Can't recall"] 

如果所有的项目都已经统一:

>>> mylist = [u"apple", u"samsung", u"toshiba", u"Don’t know", u"Can’t recall"] 
>>> [item.replace(u'’',u"'") for item in mylist] 
[u'apple', u'samsung', u'toshiba', u"Don't know", u"Can't recall"] 
+0

尝试都和我要么得到一个错误或者此:“你好”,“不知道”,“唐\ XE2 \ X80 “知道”,“无法回忆”]奇怪。 –

+0

@ Boosted_d16对我来说工作正常,不要忘记在你的源代码中使用这一行:'# - * - coding:utf-8 - * - '。 http://ideone.com/HSlDx5 –

+0

不知道为什么它不工作,但现在它的工作正常。欢呼Ashwini。 –