LINUX.ORG.RU

Работа с json

 ,


0

1
def g():
    with open('days.txt', 'r') as f:
        return json.loads(f.read())


f = g()
print(f)

>>>{'amount': 2, 'hash': '6d0d56cbb80fe275ebfdf8e84ee475a5', 'name': 'ivan', 'to_whom': 'katja', 'uuid': '000'}

Как сделать, чтобы вывод был таким(файл изначально записан так):

{                                             
'amount': 2,                                   
 'hash': '6d0d56cbb80fe275ebfdf8e84ee475a5',
 'name': 'ivan',                                           
 'to_whom': 'katja',                                        
 'uuid': '000'
}                                                                            
  json.loads() убирать нельзя 

После парсинга оригинальное форматирование json’а полностью теряется. Можно сделать pretty print, как выше сказали, но точно восстановить форматирование оригинала в общем случае не выйдет.

provaton ★★★★★
()
Ответ на: комментарий от anonymous

Хорошо. Все работает.

А можно сделать так, чтобы не только выводился оригинальный текст из файла, но и в таком же виде записывался в другой файл?

lil_rainnn
() автор топика
Ответ на: комментарий от provaton

Хорошо. Все работает.

А можно сделать так, чтобы не только выводился оригинальный текст из файла, но и в таком же виде записывался в другой файл?

lil_rainnn
() автор топика
Ответ на: комментарий от dem

Ну количество вот таких объектов

{
‘amount’: 2,
‘hash’: ‘6d0d56cbb80fe275ebfdf8e84ee475a5’, ‘name’: ‘ivan’,
‘to_whom’: ‘katja’,
‘uuid’: ‘000’ }

lil_rainnn
() автор топика

Может ты прочтёшь уже какую-нибудь книжку по питону и перестанешь задавать вопросы, ответы на которые есть в любой книжке для начинающих?

frob ★★★★★
()

Можно попробовать сериализовывать в OrderedDict, который не теряет порядок ключей.

from collections import OrderedDict

def g():
    with open('days.txt', 'r') as f:
        return json.loads(f.read(), object_pairs_hook=OrderedDict)


f = g()
print(json.dumps(f, indent=4, ensure_ascii=False))
Octagon
()
Последнее исправление: Octagon (всего исправлений: 2)
Ответ на: комментарий от Octagon

насколько я помню, начиная с Python 3.6 словарь по умолчанию уже ordered

Sahas ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.