我希望使用制表符显示另一个表。
我的方法:
test_table1 = tabulate([['Alice', 24], ['Bob', 19]])
test_table2 = tabulate([['Hans', 45], ['John', 38]])
master_headers = ["table1", "table2"]
master_table = tabulate([[test_table1, test_table2]],
master_headers, tablefmt="simple")
print(master_table)
但这导致两个表都显示在table1的列中。
问题:如何在python中级联表,最好使用制表符(或类似的库)?
提前致谢!
莫夫
答案 0 :(得分:1)
我真的不知道这是否是你得到的最佳选择,但这就是我想出来的
test_table1 = str(tabulate([['Alice', 24], ['Bob', 19]])).splitlines()
test_table2 = str(tabulate([['Hans', 45], ['John', 38]])).splitlines()
master_headers = ["table1", "table2"]
master_table = tabulate([list(item) for item in zip(test_table1,test_table2)],
master_headers, tablefmt="simple")
print(master_table)
输出:
table1 table2
--------- --------
----- -- ---- --
Alice 24 Hans 45
Bob 19 John 38
----- -- ---- --
<强>解释强>:
目的是将字符串数组传递给 master_table 的tabulate
,就像使用 test_table1 和 test_table2 一样
使用.splitlines()
>>>str(tabulate([['Alice', 24], ['Bob', 19]]))
>>>'----- --\nAlice 24\nBob 19\n----- --'
>>>str(tabulate([['Alice', 24], ['Bob', 19]])).splitlines()
>>>['----- --', 'Alice 24', 'Bob 19', '----- --']
所以我们有['----- --', 'Alice 24', 'Bob 19', '----- --']
和['---- --', 'Hans 45', 'John 38', '---- --']
,但是我们无法通过这种方式传递它们,因为输出会非常奇怪:
table1 table2
--------- --------- --------- ---------
----- -- Alice 24 Bob 19 ----- --
---- -- Hans 45 John 38 ---- --
因此我们需要zip
这些列表,并将值转换为list
,因为zip
返回list
个tuple
个对象,这就是这里发生的事情:
>>>[list(item) for item in zip(test_table1,test_table2)]
>>>[['----- --', '---- --'],
['Alice 24', 'Hans 45'],
['Bob 19', 'John 38'],
['----- --', '---- --']]
这就是tabulate
如何根据需要轻松获取数据的方式。