2014-12-19 2 views
-2

Я пытаюсь разобрать JSON-файл, и у меня есть ошибка, когда я хочу напечатать значение JSON, которое является строкой HTML.Загрузите файл JSON UTF8 с помощью Python

Ошибка: Traceback (most recent call last): File "parseJson.py", line 11, in <module> print entryContentHTML.prettify() UnicodeEncodeError: 'ascii' codec can't encode character u'\u02c8' in position 196: ordinal not in range(128)

import json 
import codecs 
from bs4 import BeautifulSoup 

with open('cat.json') as f: 
    data = json.load(f) 

print data["entryLabel"] 
entryContentHTML = BeautifulSoup(data["entryContent"]) 
print entryContentHTML.prettify() 

Что такое общий способ загрузки файла JSON с спецификацией UTF8?

+0

Вы должны всегда включать полный трассировку; Я ошибочно следил за вашим намеком, что проблема с загрузкой JSON была проблемой, но ваша трассировка покажет, что это будет либо первая, либо вторая инструкция 'print'. –

ответ

2

Вы загружаете JSON просто отлично. Это ваш print заявление, которое терпит неудачу.

Вы пытаетесь напечатать на консоли или терминале, который настроен только для обработки ASCII. Вы должны либо изменить конфигурацию консоли или явно кодировать вывод:

print data["entryLabel"].encode('ascii', 'replace') 

и

print entryContentHTML.prettify().encode('ascii', 'replace') 

Без дополнительной информации о вашей среде это в противном случае невозможно сказать, как исправить свою конфигурацию (если вообще возможно).

+0

Я пробовал это раньше, но у меня есть эта ошибка 'TypeError: 'encoding' является недопустимым аргументом ключевого слова для этой функции. –

+0

@ChesterMcAllister: тогда вы используете Python 2, а ошибка * находится в другом месте полностью *. Пожалуйста, укажите полную информацию о ваших ошибках ** всегда **. –

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