我试图将几个等长的列表打印为一个表格的列。
我正在从一个 .txt 文件中读取数据,在代码结尾,我有 5 个列表,我想将它们作为分隔空格的列打印出来。
我正在从一个 .txt 文件中读取数据,在代码结尾,我有 5 个列表,我想将它们作为分隔空格的列打印出来。
我会给你展示一个三元组类比:
>>> l1 = ['a', 'b', 'c']
>>> l2 = ['1', '2', '3']
>>> l3 = ['x', 'y', 'z']
>>> for row in zip(l1, l2, l3):
... print ' '.join(row)
a 1 x
b 2 y
c 3 z
>>> from beautifultable import BeautifulTable
>>> table = BeautifulTable()
>>> table.column_headers = ["name", "rank", "gender"]
>>> table.append_row(["Jacob", 1, "boy"])
>>> table.append_row(["Isabella", 1, "girl"])
>>> table.append_row(["Ethan", 2, "boy"])
>>> table.append_row(["Sophia", 2, "girl"])
>>> table.append_row(["Michael", 3, "boy"])
>>> print(table)
+----------+------+--------+
| name | rank | gender |
+----------+------+--------+
| Jacob | 1 | boy |
+----------+------+--------+
| Isabella | 1 | girl |
+----------+------+--------+
| Ethan | 2 | boy |
+----------+------+--------+
| Sophia | 2 | girl |
+----------+------+--------+
| Michael | 3 | boy |
+----------+------+--------+
玩得开心
假设您有一个列表的列表:
for L in list_of_lists:
print " ".join(L)
str.join(iterable)
函数可将一个可迭代对象中的组成部分,用给定的字符串连接起来。" ".join([1, 2, 3])
变成了 "1 2 3"。list
应该是一列:for T in zip(list1, list2, list3, list4, list5):
print " ".join(T)
zip()
函数将给定的列表合并为一个元组列表:
>>> zip([1,2,3], [4,5,6], [7,8,9])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
干杯!
for nested_list in big_container_list
print '\t'.join(nested_list)
其中\t
代表制表符
快速示例:
In [1]: a = [['1','2'],['3','4']]
In [5]: for nested_list in a:
...: print '\t'.join(nested_list)
...:
1 2
3 4
试用我的库
我刚刚制作了一个库,我认为它可以真正帮助你。它非常简单,所以我认为你应该使用它。它叫做TableIT。
要使用它,首先请按照GitHub页面上的下载说明进行下载。
然后导入它:
import TableIt
然后创建一个列表的列表,其中每个内部列表都是一行:
table = [
[4, 3, "Hi"],
[2, 1, 808890312093],
[5, "Hi", "Bye"]
]
然后你只需要打印它:
TableIt.printTable(table)
这是您获得的输出:
+--------------------------------------------+
| 4 | 3 | Hi |
| 2 | 1 | 808890312093 |
| 5 | Hi | Bye |
+--------------------------------------------+
如果您想要使用字段名称(如果您不使用字段名称,则无需说useFieldNames=False,因为默认设置为该值):
TableIt.printTable(table, useFieldNames=True)
从中你会得到:
+--------------------------------------------+
| 4 | 3 | Hi |
+--------------+--------------+--------------+
| 2 | 1 | 808890312093 |
| 5 | Hi | Bye |
+--------------------------------------------+
还有其他用途,例如你可以这样做:
import TableIt
myList = [
["Name", "Email"],
["Richard", "richard@fakeemail.com"],
["Tasha", "tash@fakeemail.com"]
]
TableIt.print(myList, useFieldNames=True)
从那个:
+-----------------------------------------------+
| Name | Email |
+-----------------------+-----------------------+
| Richard | richard@fakeemail.com |
| Tasha | tash@fakeemail.com |
+-----------------------------------------------+
或者你可以这样做:
import TableIt
myList = [
["", "a", "b"],
["x", "a + x", "a + b"],
["z", "a + z", "z + b"]
]
TableIt.printTable(myList, useFieldNames=True)
从那里你得到:
+-----------------------+
| | a | b |
+-------+-------+-------+
| x | a + x | a + b |
| z | a + z | z + b |
+-----------------------+
你也可以使用颜色。
通过使用颜色选项(默认设置为无)并指定RGB值来使用颜色。
使用上面的示例:
import TableIt
myList = [
["", "a", "b"],
["x", "a + x", "a + b"],
["z", "a + z", "z + b"]
]
TableIt.printTable(myList, useFieldNames=True, color=(26, 156, 171))
然后你会得到:
请注意,打印颜色可能对您无效,但它与其他打印彩色文本的库完全相同。我已经测试过每一种颜色都可以正常工作。蓝色也不会出现问题,就算使用默认的34m
ANSI转义序列(如果您不知道这是什么也没关系)。总之,这一切都源于每种颜色都是RGB值而不是系统默认值。