【问题标题】:pprint(): how to use double quotes to display strings?pprint():如何使用双引号来显示字符串?
【发布时间】:2013-04-11 20:18:04
【问题描述】:

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

【问题讨论】:

  • 为什么要需要双引号? pprint() 只使用字符串的repr() 结果,除非包含文字' 引号,否则它将使用'
  • 也许您正在寻找 json.dumps() 代替? JSON 对字符串使用双引号...
  • 感谢@Martijn,json.dumps() 满足我的需求。您可以将其发布为答案吗?

标签: python pretty-print pprint


【解决方案1】:

看起来您正在尝试生成 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

【讨论】:

  • 这修复了单->双引号,但这不足以手动查看,因为它不会打印输出。
  • @travelingbones 关键是 OP 试图生成 JSON,并且使用了错误的工具。他们实际上并没有试图漂亮地打印!也就是说,json.dumps() 函数可以配置为在一定程度上进行漂亮的打印。
  • 我明白了。我面临同样的问题,但我需要两者 - 我需要手动读取输出 json,并将其插入采用 .json 格式的内容。我只是想包含我发现的信息——这确实将单引号转换为双引号,但打印效果不佳。
  • 对于漂亮打印的 JSON,请参阅stackoverflow.com/questions/12943819/…。同样,这从来都不是这个答案的重点。
  • 检查。从我最初的评论中可以清楚地看出你回答了最初的问题。总结一下,我认为这个答案stackoverflow.com/questions/12943819/… 使用您的解决方案和一个有助于查看的缩进参数。
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
相关资源
最近更新 更多