pprint():如何使用双引号显示字符串?

时间:2013-04-18 15:54:49

标签: python pretty-print pprint

如果我使用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}

1 个答案:

答案 0 :(得分:16)

看起来你正在尝试制作JSON;如果是,请使用json module

>>> 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布尔值以小写,truefalse编写。 Python使用标题大小写TrueFalse
  • JSON使用null表示缺少值,Python使用None
  • JSON字符串使用UTF-16代码点,任何非BMP代码点都是encoded using surrogate pairs。除了少数单字母反斜杠转义,例如\n\"任意代码点转义,使用\uXXXX 16位十六进制表示法。 Python 3字符串涵盖了所有Unicode,语法支持\xXX\uXXXX\UXXXXXXXX 8,16和32位转义序列。

如果要生成缩进的JSON输出(有点像pprint()输出列表和词典的缩进Python语法),则将indent=4sort_keys=True添加到json.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