【问题标题】:Python formatting my json outputPython 格式化我的 json 输出
【发布时间】:2018-08-08 18:45:01
【问题描述】:
# -*- coding: utf-8 -*-

import json
from pprint import pprint

drink_list = [23,601,633,673,607,662,6622,6014,6104,615,038,606,607,627,6094]

filename = (r'C:\Users\desktop\pizza\123template.json')

with open(filename, 'r') as f:
    data = f.read()

try:
    template = json.loads(data)
except Exception:
    # this file can also be here 
    print('json exception')
    raise


for output in drink_list:
    print(output)
    temp = template.copy()
    temp["meta"]["sodanumber"] = output


    with open(r'C:\Users\desktop\pizza\123\{}.json'.format(output, indent=40), 'w', encoding='cp1252') as f:
        data = json.dumps(temp)
        f.write(data)
       # pprint.pprint(temp, width=60)

IndentationError: unindent 不匹配任何外部缩进级别。

但我认为这不仅仅是一个简单的缩进。我可以让我的控制台更改格式,但需要在实际输出文件中更改格式。但是我应该在哪里将我的额外格式添加到我的“with open”行中?

已经阅读了 4 个小时的材料和简单的示例,但 pprint 是否完成了大部分工作?

当前的输出是大量的工作包装文本。输出需要如下所示。我怎样才能让它看起来像这样?:

{
    "meta": {
        "drinkNumber": 662,
        "effectiveDate": "2016-10-12 16:00:31",
        "documentType": "checkout-device"
    },
    "documents": [
        {
            "code": "Checkout2",
            "name": "Printer 2",
            "port": "COM2",
            "type": "LABEL",

当前输出:

{ "meta": { "drinkNumber": 662, "effectiveDate": "2016-10-12 16:00:31", "documentType": "checkout-device" },"documents": [{
"code": "Checkout2","name": "Printer 2","port": "COM2","type": "LABEL",

【问题讨论】:

  • 您能否提供一个带有问题的实际输出示例?最好使用与您的“所需格式”示例相同的值。
  • @FloMei 已更新为当前输出

标签: python json formatting output pprint


【解决方案1】:
import json

data = { "meta": { "drinkNumber": 662, "effectiveDate": "2016-10-12 16:00:31", "documentType": "checkout-device" },"documents": [{ "code": "Checkout2","name": "Printer 2","port": "COM2","type": "LABEL"}]}

json.dumps(data, sort_keys=True, indent=4)

输出:

{
    "documents": [
        {
            "code": "Checkout2",
            "name": "Printer 2",
            "port": "COM2",
            "type": "LABEL"
        }
    ],
    "meta": {
        "documentType": "checkout-device",
        "drinkNumber": 662,
        "effectiveDate": "2016-10-12 16:00:31"
    }
}

注意:您当前的输出不完整。

【讨论】:

  • 谢谢,有时间我会复习一下。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
相关资源
最近更新 更多