У меня есть приложение, в котором мне нужно преобразовать файлы словаря с маринованными полками Python в файлы JSON.
import ujson, shelve
with open("shelveFile", "r") as sfile:
shelve_dict=shelve.open(sfile)
py_dict= dict(shelve_dict)
with open("jsonfile.json","w") as jsonfile:
ujson.dump(py_dict, jsonfile)
with open("jsonfile.json",'r') as readJSONfile:
ujson.loads(readJSONfile.read())
Примечание. Если я использую ujson.load(jsonfile2)
, я получаю ошибку сериализации.
У меня есть проблема: файл полки использует типы данных кортежа Python для некоторых ключей словаря. Я могу использовать ujson.dump
для сохранения в формате JSON, но когда я пытаюсь использовать ujson.load(jsonfile)
, ключи загружаются в виде строк, а не кортежей. Если не считать использования понимания словаря для преобразования ключей (неуверенный в этом точном синтаксисе), существует ли библиотека, которая преобразовала бы файл полки в файл JSON, который я мог бы загрузить обратно в объект словаря Python?
При загрузке методом ujson.loads(fileobj.read())
:
{"('tuplekey1','tuplekey2')": value,}
Должно быть:
{('tuplekey1','tuplekey2'): value,}
(пожалуйста, не голосуйте против, если вопрос не ясен, я сделаю все возможное, чтобы уточнить, если это необходимо... Я не часто публикую здесь вопросы.)
ast.literal_eval
и оценить результирующие ключи dict, как в этом примере:{ast.literal_eval(k): v for k, v in my_dict.items()}
- person Chiheb Nexus   schedule 19.12.2018