2015-09-08 2 views
1

Я пытаюсь написать сценарий, который принимает json-файл pizza-train.json и извлекает поле request_text из каждого словаря в списке. Но им получаю сообщение об ошибке при запуске ниже код:Извлеките json-файл в словарь в python

Код:

import json 

json1_file = open("pizza-train.json", 'r') 
json1_str = json1_file.read() 

json1_data = json.loads(json1_str) 

print(json1_data) 

Ошибка:

Файл "C: \ Python34 \ Lib \ кодировок \ cp1252.py", строка 19, в кодировке return codecs.charmap_encode (вход, self.errors, encoding_table) [0]

UnicodeEncodeError: кодек 'charmap' не может кодировать символы в позиции 58765-58767: символьные карты до

Я пробовал различные решения, такие как: encoding="UTF-8".encode('utf-8')

Может кто-нибудь объяснить мой, почему это обыкновение печатать json1_data?

+1

Обеспечить полную StackTrace , пожалуйста. Вы получаете эту ошибку на строке '' 'print (json1_data)' ''? Если да, то вы не можете печатать символы, отличные от Windows1252, в консоли, так как это ваша консольная консоль. – user996142

+0

У меня ошибка на этой линии. Как можно изменить хэш-кодировку hes console? – Anonymous

+0

показать ответ: использовать '' chcp''. Длительный ответ ниже – user996142

ответ

0

Ваши данные имеют некоторые символы (в позиции 58765-58767), которые не могут быть представлены вашей кодировкой (Windows1252). Вы должны переключить консоль на кодировку, которая ее поддерживает (chcp команда в окнах).

Вот пример:

У меня есть файл:

# coding=utf-8 
print(u"русский текст") # This is russian text (cyrilic chars) 

Файл сам UTF8, поэтому Python знает, что буква "Й" является кириллица письмо.

Но у меня есть кодовая страница CP1252, у которой нет такой буквы (поскольку она имеет только латинские символы).

>chcp 
Active code page: 1252 

>python.exe foo.py 
Traceback (most recent call last): 
    File "foo.py", line 2, in <module> 
    print(u"руÑÑкий текÑÑ‚") 
    File "c:\Python27\lib\encodings\cp1252.py", line 12, in encode 
    return codecs.charmap_encode(input,errors,encoding_table) 
UnicodeEncodeError: 'charmap' codec can't encode characters in position  0-6: character maps to <undefined> 

я теперь изменить кодовую к одному, то есть буква "Й" и другие:

>chcp 1251 
Active code page: 1251 

>c:\Python27\python.exe foo.py 
русский текст 

я могу использовать 866 (который является DOS Cyr кодовая а)