Я почти уверен, что ваш test1.json
файл содержит отметку порядка байтов . Используйте параметр encoding
для open()
функции . Используйте фактическую кодировку вашего файла; если я могу только догадываться UTF-8
, используйте encoding='utf-8-sig'
следующим образом:
import json
path_to_file='D:\\Python\\SO3\\data\\test1.json'
with open(path_to_file, encoding='utf-8-sig') as f:
data = json.load(f)
print(data)
Вывод : D:\Python\SO3\61667193.py
{'Days': [{'Price': '1.61', 'Date': '04-04-13'}, {'Price': '1.61', 'Date': '04-11-13'}]}
Примечание : Вы можете определить реальную кодировку / спецификацию, используя следующую функцию от ivan_pozdeev :
def detect_by_bom(path,default):
with open(path, 'rb') as f:
raw = f.read(4) #will read less if the file is smaller
for enc,boms in \
('utf-8-sig',(codecs.BOM_UTF8,)),\
('utf-16',(codecs.BOM_UTF16_LE,codecs.BOM_UTF16_BE)),\
('utf-32',(codecs.BOM_UTF32_LE,codecs.BOM_UTF32_BE)):
if any(raw.startswith(bom) for bom in boms): return enc
return default