2013-06-29 3 views
1

Я пытался разобрать данные Twitter. Я извлекаться данные и хранить его в файле с именем 'twitterdata'Ошибка кодирования в python

f = open('twitterdata','r') 
for line in f: 
    jsonline = json.loads(line) 
    for key in jsonline: 
     print str(jsonline[key]).encode('utf-8') 

Я получаю сообщение об ошибке, даже после того, как с помощью закодировать ('UTF-8'):

print str(jsonline[key]).encode('utf-8') 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-17: ordinal not in  range(128) 
+0

Какую версию Python вы используете, 2.x или 3.x? Обработка Юникода изменилась между двумя версиями, поэтому важно знать, какую версию вы используете, чтобы мы могли дать вам правильный ответ. – rmunn

+0

Я использую python 2.7.3. Используя pycharm IDE –

ответ

4

Отбросьте str(), или изменить его на unicode():

print jsonline[key].encode('utf-8') 

или

print unicode(jsonline[key]).encode('utf-8') 

В Python 2.x, str() пытается преобразовать его содержимое в 8-битовых строк. Поскольку вы передаете его Unicode-объектам, он использует кодировку по умолчанию (ascii) и не работает до того, как достигнут вызов .encode('utf-8'). Использование unicode() здесь избыточно, если данные, которые вы получаете, являются всего текста, но будут полезны, если некоторые из них, скажем, целые, поэтому я рекомендую их.

+1

, он сработал. Благодаря! –

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