创建具有一致引号的 JSON 字符串

Creating JSON string with consistent quotes

提问人:densha 提问时间:11/15/2023 最后编辑:toyota Supradensha 更新时间:11/15/2023 访问量:67

问:

我正在尝试在 Python 中动态创建一个字符串并打印它,但是我最终在生成的字符串中使用了混合引号格式。我想要的输出是一致的引号。"{'name': 'test', 'scope': {'sites': [41, 42]}, 'version': '2.'}"

这是我用来尝试动态构造字符串的代码

name = "test"
ID1 = "41"
ID2 = "42"

IDS = f'{{"ID": [{ID1}, {ID2}]}}'

report = {
    "name": f"{name}",
    "scope": f'"{IDS}"',
    "version": "2."
}

print(report)

我得到输出”{'name': 'test', 'scope': '"{"sites": [41, 42]}"', 'version': '2.'}"

我尝试转义引号并更改引号的顺序,例如,但我无法生成具有一致引号的所需字符串。"scope": f"'{IDS}'",

如何在创建后不使用字符串替换的情况下动态创建我尝试使用一致引号的字符串?

蟒蛇 JSON

评论

1赞 Ry- 11/15/2023
json.dumps
1赞 tevemadar 11/15/2023
这不是你想要的 JSON。JSON有双引号,所以应该是.{"name": "test", "scope": {"sites": [41, 42]}, "version": "2."}

答:

3赞 Rémi.T 11/15/2023 #1

.JSON只是字典文件,你可以使用Python字典来创建你想要的东西:

name = "test"
ID1 = 41
ID2 = 42

IDS = {"ID": [ID1, ID2]}

report = {}
report["name"] = name
report["scope"] = IDS
report["version"] = 2.

print(report)

{'name': 'test', 'scope': {'ID': [41, 42]}, 'version': 2.0}

请注意,每种类型都可以存储在字典中,因此无需仅使用 string,例如这里我们有 string、int 和 list。

但正如@tevemadar提到的,字典和JSON并不完全相同。因此,在 Python 中可以将一个转换为另一个:

import json

# Convert Python to JSON  
json_report = json.dumps(report, indent = 4)