@iiantonii

Проблемы с кодировкой при конвертации из xls в json?

Проблема заключается в следующем при конвертации в json файл записывается следующий результат
[{"kat-id": "58:08:0500111:86", "vid_iz": "\u0414\u043b\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u043e\u0431\u043d\u043e\u0433\u043e \u0445\u043e\u0437\u044f\u0439\u0441\u0442\u0432\u0430", "pl": 1300.0, "adres": "\u043e\u0431\u043b.
Взял частично из файла , но думаю суть понятно. То есть кириллицу он записывается в таком формате \u043b
Исходники:
# -*- coding: utf-8 -*-
import xlrd
from collections import OrderedDict
import simplejson as json
# Open the workbook and select the first worksheet
wb = xlrd.open_workbook('4.xlsx', encoding_override='utf-8')
sh = wb.sheet_by_index(0)
# List to hold dictionaries
cars_list = []
# Iterate through each row in worksheet and fetch values into dict
for rownum in range(1, sh.nrows):
    kadastr = OrderedDict()
    row_values = sh.row_values(rownum)
    kadastr['kat-id'] = row_values[0]
    kadastr['vid_iz'] = row_values[1]
    kadastr['pl'] = row_values[2]
    kadastr['adres'] = row_values[3]
    kadastr['name_is'] = row_values[4]
    kadastr['pr_rez'] = row_values[5]
    cars_list.append(kadastr)
# Serialize the list of dicts to JSON
j = json.dumps(cars_list)
print(cars_list)
# Write to file
with open('data.json', 'w', encoding='cp1251') as f:
    f.write(j)

Пробовал и явно прописать кодировку и нет все равно так выводит при чем при печати print(cars_list) выводит нормально
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@iiantonii Автор вопроса
Вопрос решил сам. Вот исходник
# -*- coding: utf-8 -*-
import xlrd
from collections import OrderedDict
import simplejson as json
import codecs
# Open the workbook and select the first worksheet
wb = xlrd.open_workbook('4.xlsx', encoding_override='utf-8')
sh = wb.sheet_by_index(0)
# List to hold dictionaries
cars_list = []
# Iterate through each row in worksheet and fetch values into dict
for rownum in range(1, sh.nrows):
    kadastr = OrderedDict()
    row_values = sh.row_values(rownum)
    kadastr['kat-id'] = row_values[0]
    kadastr['vid_iz'] = row_values[1]
    kadastr['pl'] = row_values[2]
    kadastr['adres'] = row_values[3]
    kadastr['name_is'] = row_values[4]
    kadastr['pr_rez'] = row_values[5]
    cars_list.append(kadastr)
# Serialize the list of dicts to JSON
# j = json.dumps(cars_list, ensure_ascii=False).encode('utf8')
# j = json.dumps(cars_list, encoding='utf-8')
print(cars_list)

# Write to file


with codecs.open('data.json', 'w', encoding='utf-8') as f:
    json.dump(cars_list, f, ensure_ascii=False)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 140 000 до 190 000 руб.
Cashwagon Москва
от 150 000 руб.
Betting Software Томск
от 55 000 до 100 000 руб.
24 мая 2019, в 23:37
100000 руб./за проект
24 мая 2019, в 21:53
500 руб./в час
24 мая 2019, в 21:36
500 руб./за проект