18

如果我使用 打印字典pprint,它总是将字符串包裹在单引号 ( ') 周围:

>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{'AAA': 1, 'BBB': 2, 'CCC': 3}

有没有办法告诉pprint使用双引号 ( ") 代替?我想有以下行为:

>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{"AAA": 1, "BBB": 2, "CCC": 3}
4

1 回答 1

36

看起来您正在尝试生成 JSON;如果是这样,请使用json模块

>>> import json
>>> print json.dumps({'AAA': 1, 'BBB': 2, 'CCC': 3})
{"AAA": 1, "BBB": 2, "CCC": 3}

pprint()函数生成Python 表示,而不是 JSON,并且引用样式不可配置。不要混淆这两种语法。JSON 乍一看可能很像 Python,但除了引用样式之外,还有更多不同之处:

  • JSON 仅限于一些特定类型({...}具有键值对、[...]数组、"..."字符串、数字、布尔值和空值的对象)。Python 数据结构要丰富得多。
  • Python 字典键可以是任何可散列的对象,JSON 对象键只能是字符串。
  • JSON 布尔值用小写字母编写,true并且false. Python 使用标题大小写TrueFalse.
  • JSON 用于null表示没有值,Python 使用None.
  • JSON 字符串使用 UTF-16 代码点,任何非 BMP 代码点都使用代理对进行编码。除了少数单字母反斜杠转义(如任意代码点转义)外\n,还使用​​16 位十六进制表示法。Python 3 字符串涵盖了所有 Unicode,并且语法支持, , 以及8、16 和 32 位转义序列。\"\uXXXX\xXX\uXXXX\UXXXXXXXX

如果你想生成缩进的 JSON 输出(有点像pprint()输出列表和字典的缩进 Python 语法),然后 在调用中添加indent=4和:sort_keys=Truejson.dumps()

>>> print json.dumps({'AAA': 1, 'CCC': 2, 'BBB': 3}, indent=4, sort_keys=True)
{
    "AAA": 1,
    "BBB": 2,
    "CCC": 3
}

请参阅http://stackoverflow.com/questions/12943819/how-to-python-prettyprint-a-json-file

于 2013-04-18T16:01:59.577 回答