python:从互联网复制+粘贴撇号给我一个奇怪的错误

时间:2013-09-07 19:50:19

标签: python string utf-8 ascii

我需要能够在我的代码中使用网站上的复制+粘贴字符串。网站的编码是unicode(utf-8)。字符串

'''I’ve held others before''' 

是复制+粘贴,并且有一个'有趣'的撇号。当我试图替换这个撇号时

my_string = '''I’ve held others before'''

my_string.replace('’', "'")
print(my_string)

我还是

>>> I’ve held others before

而不是

>>> I've held others before

我无法使用带有趣撇号的字符串,因为稍后在我的代码中它给了我这个错误:

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

我尝试添加两个

my_string.decode('utf-8')
my_string.encode('utf-8')

但他们似乎没有做任何事情。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

字符串在python中是不可变的,你需要再次将str.replace的结果赋值给变量。

>>> my_string = '''I’ve held others before'''
>>> my_string = my_string.replace('’', "'")
>>> my_string
"I've held others before"

最好为unicode字符串使用u'...'前缀:

>>> u'''Joey’s house'''.replace(u'’', "'")
"Joey's house"

在文件顶部添加此行以删除这些解码错误:

# -*- coding: utf-8 -*-