Python 3-使用三个列表打印表格

时间:2018-11-26 14:48:25

标签: python python-3.x

我对Python还是很陌生,现在正努力为打印输出格式化好数据。

我有三个列表:

list1 = [a, b, c, a, b, c, a,  b, c]
list2 = [day1, day2, day3]
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

现在,我想以表格格式来表示它,就像这样:

------------+--------+-------+-------+
|    User    |  day1  | day2  | day3  | 
+============+========+=======+=======+
|a           |  1     |  2    |   3   |
+------------+--------+-------+-------+
| b          | 4      | 5     |   6   |
+----- ------+--- ----+-------+ ------+
|c           |  7     | 8     | 9     |

我已经厌倦了诸如texttable之类的不同模块,并且还尝试使用For循环组合。但我仍然无法捕捉正确的组合。

2 个答案:

答案 0 :(得分:3)

我过去使用过prettyTable,在完成此任务方面非常有效。 PrettyTable link

更新

也请参阅此stackoverflow问题以获取更多详细信息-How to use PrettyTable

示例代码(copied from the following link)试图说明它的作用(尽管它使用的是从PrettyTable分叉的程序包,但我相信用法仍然相同)。

#!/usr/bin/python3

from prettytable import PrettyTable

x = PrettyTable()

x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]

x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])

print(x)

这是一个非常简单的答案。但是,它确实显示了设置和使用它是多么容易。

谢谢。

答案 1 :(得分:0)

Astropy有一个很好的asciitables库,似乎可以解决这个问题。

http://docs.astropy.org/en/latest/io/ascii/index.html

python-tabulate也似乎试图解决此问题:

https://bitbucket.org/astanin/python-tabulate

但是据我所知,Pandas是用于表格数据的默认python库。看看Jupyter笔记本中的桌子有多漂亮!

enter image description here

要将数据框从列表中删除,您可以在安装pandas的情况下执行以下操作:

import pandas a pd
list1 = [a, b, c, a, b, c, a,  b, c]
list2 = [day1, day2, day3]
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

df = pd.DataFrame({
    "list1": list1,
    "list2": list2,
    "list3": list3,
})