Python сохранение строки в файл.Ошибка Юникода - PullRequest
2 голосов
/ 17 декабря 2011

Я извлекаю данные из электронной таблицы Google, используя Spreadsheet API в Python. Я могу напечатать каждую строку моей электронной таблицы в командной строке с помощью цикла for, но часть текста содержит символы, например, символ градуса Цельсия (маленький кружок). Когда я печатаю эти строки в командной строке, я хочу записать их в файл. Но я получаю разные ошибки Unicode, когда я делаю это. Я пытался решить это, делая это вручную, но их слишком много:

current=current.replace(u'\xa0',u'')
current=current.replace(u'\u000a',u'p')
current=current.replace(u'\u201c',u'\"')
current=current.replace(u'\u201d',u'\"')
current=current.replace(u'\u2014',u'-')

что я могу сделать, чтобы не было ошибок? например

UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ xa0' в позиции 1394: порядковый номер не в диапазоне (128)

current=current.replace(u'\u0446',u'u')

Ответы [ 3 ]

5 голосов
/ 17 декабря 2011

Вы хотите декодировать его из любой кодировки, в которой он находится:

decoded_str = encoded_str.decode('utf-8')

Для получения дополнительной информации о том, как обращаться со строками Unicode, вы должны перейти к http://docs.python.org/howto/unicode.html

0 голосов
/ 17 декабря 2011
import unicodedata
decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore')

Я не совсем уверен, что нормализация необходима в этом случае.Кроме того, эта опция игнорирования означает, что вы можете потерять некоторую информацию, поскольку ошибки декодирования будут игнорироваться.

0 голосов
/ 17 декабря 2011
''.join(c for c in current if ord(c) < 128)
...