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

pprint(): how to use double quotes to display strings?

如果我使用pprint打印字典,它总是用单引号('括起来):

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

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

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


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

1
2
3
>>> 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代码点都使用代理项对进行编码。除了少数单字母反斜杠转义,如
    \",任意代码点转义使用\uXXXX16位十六进制表示法。python 3字符串包含所有Unicode,语法支持\xXX\uXXXX\UXXXXXXXX8、16和32位转义序列。

如果要生成缩进JSON输出(有点像pprint()输出列表和字典的缩进python语法),则将indent=4sort_keys=True添加到json.dumps()调用中:

1
2
3
4
5
6
>>> 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