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

问题描述 投票:9回答:1

如果我使用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}
python pretty-print pprint
1个回答
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使用title-case,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

© www.soinside.com 2019 - 2024. All rights reserved.