变量在打印时更改其格式

时间:2017-01-11 05:24:00

标签: python python-2.7

我正在尝试使用Python将带有键值数据的变量存储在一个文件中,但是当我尝试打印它时,它会以不同的格式出现。

我希望结果打印出来 -

data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0",
                  "design": {
                    "@self": "@self"
                    }
                }

这是打印数据时得到的输出 -

{'icon': '/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library', 'design': {'@self': '@self'}, 'name': 'name', 'version': '1.0.0', 'description': 'This is my offering'}

3 个答案:

答案 0 :(得分:7)

您尚未说明打印时对您来说重要的内容,以及您目前正在尝试打印的方式。

字典中没有格式。代码中的任何格式化只是为了使代码看起来像人类可读,并且实际上并未存储在data字典中(只保留每个字符串元素中的格式,即在一对引号之间)。

如果它只是您关注的格式(多行和缩进),解决这个问题的最简单方法是使用Pretty Print moduleJSON module - 要么应该完成工作,取决于您对数据外观的偏好以及您希望对打印输出格式进行多少控制。特别是,JSON输出占据了更多的垂直屏幕空间,但是有些人可能会认为它更具人性化。

PrettyPrint pprint:

import pprint
data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0","design": {"@self": "@self"}}
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(data)
>>> 
{   'description': 'This is my offering',
    'design': {   '@self': '@self'},
    'icon': '/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library',
    'name': 'name',
    'version': '1.0.0'}
>>>

JSON转储:

import json
data={"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0","design": {"@self": "@self"}}
print(json.dumps(data, indent=4))
>>> 
{
    "icon": "/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library", 
    "design": {
        "@self": "@self"
    }, 
    "name": "name", 
    "version": "1.0.0", 
    "description": "This is my offering"
}
>>> 

如果您担心项目的打印顺序,那么您需要有一个数组,按照首选顺序存储密钥(字典没有任何禁止排序),然后迭代您的密钥并逐个手动打印字典项目(可能使用密钥数组上的列表解析)。

答案 1 :(得分:1)

Python不尊重用于定义数据结构的缩进或换行符,并忽略print()时使用的任何格式。这里没有很多选项,但也许您可以使用json.dumps()函数来格式化代码。格式与您的预期输出不完全匹配,但它非常接近:

>>> data = {"name":'name',"description": "This is my offering","icon":"/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library","version": "1.0.0",
                  "design": {
                    "@self": "@self"
                    }
                }
>>> import json
>>> print(json.dumps(data, indent=2))
{
  "description": "This is my offering",
  "version": "1.0.0",
  "icon": "/csa/api/blobstore/Magic_RGB_blue_NT.png?tag=library",
  "name": "name",
  "design": {
    "@self": "@self"
  }
}
>>>

答案 2 :(得分:0)

请注意,变量不包含任何要更改的格式。 python解释器从REPL或文件中读取文本,并将其转换为机器CPU的指令。在您致电print()之前,这些都不涉及格式化。默认情况下,print()会调用str(),然后会提供一些非常基本的格式。对于词典,这包括花括号,冒号和逗号。如果你想要更多的东西,你需要自己做。或者,您可以找到一个有助于减少某些乏味的Python模块。