2015-03-12 1 views
3

у меня есть гигантский .json файлPython с использованием JSON для чтения строки с смайликами

Im читает его с

json_data=open('file.json') 
data = json.load(json_data) 


for item in data['payload']['actions']: 
    print item['author'] 
    print item['action_id'] 
    print item['body'] 
json_data.close() 

в конечном итоге один из item['body'] содержит эту строку (которые на самом деле facebook смайликов):

words words stuff stuff\ud83c\udf89\ud83c\udf8a\ud83c\udf87\ud83c\udf86\ud83c\udf08\ud83d\udca5\u2728\ud83d\udcab\ud83d\udc45\ud83d\udeb9\ud83d\udeba\ud83d\udc83\ud83d\ude4c\ud83c\udfc3\ud83d\udc6c

, что делает его дать эту ошибку:

Traceback (most recent call last): 
    File "curse.py", line 15, in <module> 
    print item['body'] 
    File "C:\python27\lib\encodings\cp437.py", line 12, in encode 
    return codecs.charmap_encode(input,errors,encoding_map) 
UnicodeEncodeError: 'charmap' codec can't encode characters in position 35-63: character maps to <undefined> 

Есть ли способ заставить его игнорировать эти проблемы?

+1

Вы имеете в виду, кроме попробовать/за исключением блоков? – Alex

+0

Я бы хотел, чтобы он все еще печатал остальную часть строки. Есть слова перед символами, которые он не печатает. Наверное, я должен был это указать. – MikeVaughan

ответ

1

Вы можете использовать string.printable

import string 

try: 
    print item['body'] 
except UnicodeEncodeError: 
    print(''.join(c for c in item['body'] if c in string.printable)) 

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

  • Нет связанных вопросов^_^