2011-12-17 2 views
2

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

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' codec can't encode character u'\xa0' in position 1394: ordinal not in range(128)

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

ответ

5

Вы хотите расшифровать его от того, что кодирование это в:

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

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

-1
''.join(c for c in current if ord(c) < 128) 
+0

Не уверен, что @TylerDurden хочет избавиться от чартеров 'non-ascii'! – Stan

0
import unicodedata 
decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore') 

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

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