Я пытаюсь написать функцию в Jupyter Notebook, которая выводит словарь в формат, который я могу вставить в файл VSCode launch.json, и имеет правильный отступ. Но если я использую json.dumps, формат выглядит не очень хорошо.

def create_dict():
    d = {}
    d["request"] = "launch"
    d["args"] = ["run", "param1=10", "param2=yes", "param3=100", "param4=0", "param5=no"]
    return json.dumps(d)

Получается вот так. Независимо от длины строки, это всего лишь одна строка:

'{"request": "launch", "args": ["run", "param1=10", "param2=yes", "param3=100", "param4=0", "param5=no"]}'

Я думал, что могу исправить это, сделав такой отступ, но тогда результат:

def create_dict():
    d = {}
    d["request"] = "launch"
    d["args"] = ["run", "param1=10", "param2=yes", "param3=100", "param4=0", "param5=no"]
    return json.dumps(d, indent=4)

'{\n    "request": "launch",\n    "args": [\n        "run",\n        "param1=10",\n        "param2=yes",\n        "param3=100",\n        "param4=0",\n        "param5=no"\n    ]\n}'

Это совсем не то, чего я хочу. Формат, который я ищу, - это именно то, что я получаю, возвращая только словарь, но мне нужны двойные кавычки, чтобы быть совместимым с json.

def create_dict():
    d = {}
    d["request"] = "launch"
    d["args"] = ["run", "param1=10", "param2=yes", "param3=100", "param4=0", "param5=no"]
    return d

{'request': 'launch',
 'args': ['run',
  'param1=10',
  'param2=yes',
  'param3=100',
  'param4=0',
  'param5=no']}

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

0
jss367 16 Окт 2020 в 04:34

1 ответ

Лучший ответ

Все, что мне нужно, это обернуть json в оператор print:

def create_dict():
    d = {}
    d["request"] = "launch"
    d["args"] = ["run", "param1=10", "param2=yes", "param3=100", "param4=0", "param5=no"]
    return print(json.dumps(d, indent=4))


create_dict()

{
    "request": "launch",
    "args": [
        "run",
        "param1=10",
        "param2=yes",
        "param3=100",
        "param4=0",
        "param5=no"
    ]
}
0
jss367 16 Окт 2020 в 23:11