在Python中以表格形式列出列表列表

时间:2013-10-24 02:50:13

标签: python

我有一个格式如下的列表:

list_of_DVDsuppliers=[["a","m",15],["w","p",34]]

我想将此列表的内容打印为带有一些标题的表格。这是我到目前为止所尝试的内容:

def dvdprintsoftlist():
    print(list_of_DVDsoftwears)
    ''' printing the available DVDstocks,supplier's details '''
    print("This is your current list of stock")
    print("Supplier Name      Softwear Name             Amount")
    print("----------------------------------------------------------------")
    for (index,[name,softname,amount]) in enumerate (list_of_DVDsuppliers):
        print(name + "          " +softname + "            " +str(amount)  + "   ")
        print("----------------------------------------------------------------")
    print("")

问题是此代码未正确对齐表列。如何确保所有条目彼此对齐?

我还想以CSV格式导出我的数据,以便其他程序可以读取它,但这是一个单独的问题。

2 个答案:

答案 0 :(得分:1)

您可以使用format(),字符串中的{i:length}将替换为参数,其中i是订单标识符,length是“长度”该领域。

def dvdprintsoftlist():
    list_of_DVDsuppliers=[["a","m",15],["w","p",34]]
    print(list_of_DVDsuppliers)
    print
    ''' printing the available DVDstocks,supplier's details '''
    print("This is your current list of stock")
    print("Supplier Name\t\tSoftwear Name\t\tAmount")
    print("----------------------------------------------------------------")
    for [name, softname, amount] in list_of_DVDsuppliers:
        print("{0:23} {1:23} {2:5}".format(name, softname, amount))
        print("----------------------------------------------------------------")
    print("")

dvdprintsoftlist()

答案 1 :(得分:0)

尝试在打印时使用%和s之间的填充位

你可以像......一样使用它们。

print('%-20s%-20s%-20s'%('supplier name','software name','amount'))  

- 用于左边填充,+ ve(默认)用于右边填充