8

我正在尝试将几个列表(等长)打印为表格的列。

我正在从 .txt 文件中读取数据,在代码的末尾,我有 5 个列表,我想将它们打印为分隔但空格的列。

4

5 回答 5

9

我将向您展示一个 3 列表模拟:

>>> 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
于 2013-06-24T15:25:49.247 回答
8

你可以使用我的包beautifultable。它支持按行或按列添加数据,甚至可以混合使用这两种方法。您可以插入、删除、更新任何行或列。

用法

>>> 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   |
+----------+------+--------+

玩得开心

于 2017-05-13T16:09:40.473 回答
2

假设您有一个列表列表:

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)]

干杯!

于 2013-06-24T15:21:10.860 回答
0
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
于 2013-06-24T15:26:11.200 回答
0

试试我的图书馆

注意:这个答案已经发布在这个问题和这个问题上。

我刚刚为此创建了一个库,我认为它真的可以提供帮助。它非常简单,这就是我认为你应该使用它的原因。它被称为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 |
+-----------------------+

颜色

您也可以使用颜色。

您可以通过使用颜色选项(默认设置为 None)并指定 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))

然后你会得到:

在此处输入图像描述

请注意,打印颜色可能不适合您,但它确实与打印彩色文本的其他库完全相同。我已经测试过,每种颜色都有效。蓝色也不会像使用默认的 ANSI 转义序列那样搞砸34m(如果你不知道那是什么也没关系)。无论如何,这一切都源于每种颜色都是 RGB 值而不是系统默认值。

更多信息

有关更多信息,请查看GitHub 页面

于 2019-12-24T13:38:34.613 回答