繁体   English   中英

Python:使用python打印吗?

[英]Python: printing in python?

我想以特定格式打印列表的内容:

这是我想要的样子:

        [
            "Zara",
            3.2
        ],
        [
            "Maxwell",
            3.3
        ],
        [
            "Norman",
            3.1
        ]

我很困惑如何实现此输出。 现在,我在列表中将各个元素作为字符串,其格式为(“ \\”“ +名称+”“ \\” +“,\\ n” +等级)。 但是,我不知道如何实现适当的缩进和包围以打印出列表。 我是否应该每次都手动打印[和],或者是否有一种方法可以将所有元素编译到一个列表中,而调用打印列表将导致上面的输出? 我可以手动设置方括号的格式,但是最后一个方括号后面会带有逗号,这是我不希望的。 任何帮助将不胜感激!

您可以使用json.dumps() 假设您有一个这样的列表列表:

>>> import json 
>>> grades = [['Zara', 3.2], ['Maxwell', 3.3], ['Norman', 3.1]]
>>> print(json.dumps(grades, indent=4))
[
    [
        "Zara", 
        3.2
    ], 
    [
        "Maxwell", 
        3.3
    ], 
    [
        "Norman", 
        3.1
    ]
]

这与您所追求的非常接近,无需编写代码,字符串本身也没有转义的引号。 如果您不喜欢外部括号,则可以单独打印每个列表:

>>> print(*(json.dumps(grade, indent=4) for grade in grades), sep=',\n')
[
    "Zara", 
    3.2
],
[
    "Maxwell", 
    3.3
],
[
    "Norman", 
    3.1
]

只是为了澄清一下,您有一个包含列表元素的列表吗? 而且内部元素始终是您要在引号后加上数字的字符串吗? 您可以定义一个子函数

    def print_list_item(item, last_item):
        print "["
        print '    "' + item[0] + '",'
        print '    ' + str(item[1]) + ','
        if last_item:
            print "]"
        else:
            print "],"

(请注意,我使用单引号来有效地“转义”双引号字符)然后可以像这样打印列表:

    for i, item in enumerate(my_list):
        print_list_item(item, i == len(my_list)-1)

您可能也可以使用printf清理它。

json.dumps()方法具有一些参数,可以更轻松地读取结果:

    import json

    # some JSON:
    x =  [['Zara', 3.2], ['Maxwell', 3.3], ['Norman', 3.1]]

    # parse x:
    y = json.loads(x, indent=4)

indent参数定义缩进数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM