2013-09-07 2 views
1

Мне нужно иметь возможность использовать скопированные + вставленные строки с веб-сайта в моем коде. Кодировка веб-сайта является unicode (utf-8). Строкаpython: copy + paste apostrophe из Интернета дает мне странную ошибку

'''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') 

, но они, кажется, не делать ничего. Есть предположения?

+0

Что такое кодирование страница, с которой вы вставили строку? – BrenBarn

+0

Я думаю, unicode (utf-8). http://www.poemsource.com/love-poems.html –

ответ

1

Строки неизменяемы в python, вам нужно снова присвоить результат str.replace переменной.

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

Это лучше использовать u'...' префикс для Юникода строк:

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

Добавить эту строку в верхней части файла, чтобы удалить эти ошибки декодирования:

# -*- coding: utf-8 -*- 
+0

Это решило! –

Смежные вопросы