如何在使用prettytable时获取单元格的值

6 投票
3 回答
9227 浏览
提问于 2025-04-18 10:46

使用prettytable时,能否获取特定单元格的值?

我有以下代码,用来遍历一个简单表格的所有行。

from prettytable import PrettyTable

table = PrettyTable(["Column 1", "Column 2", "Column 3"])
table.add_row(["A", "B", "C"])
table.add_row(["F", "O", "O"])
table.add_row(["B", "A", "R"])

for row in table:
    print(row)

这个例子会打印出以下三个表格:

+----------+----------+----------+
| Column 1 | Column 2 | Column 3 |
+----------+----------+----------+
|    A     |    B     |    C     |
+----------+----------+----------+
+----------+----------+----------+
| Column 1 | Column 2 | Column 3 |
+----------+----------+----------+
|    F     |    O     |    O     |
+----------+----------+----------+
+----------+----------+----------+
| Column 1 | Column 2 | Column 3 |
+----------+----------+----------+
|    B     |    A     |    R     |
+----------+----------+----------+

那么,如何才能只获取某一行的第一列第二列第三列的值呢?

3 个回答

-1

你可以使用 rows 方法来获取原始数据。

table.rows[0][0]   # ="A"
0

在新版的prettytable中,你可以使用json/svc获取数据:

In [13]: json.loads(table.get_json_string())[1]['Column 1']
Out[13]: 'A'

或者

In [17]: table.get_csv_string(header=False).split(',')[0]
Out[17]: 'A'

在旧版中

In [28]: table[-1].get_string(header=False, fields=['Column 1']).split('|')[1].strip()
Out[28]: 'A'
8

看起来你想要从数据中获取一部分内容。你可以参考这里的文档,试试下面的代码:

from prettytable import PrettyTable

table = PrettyTable(["Column 1", "Column 2", "Column 3"])
table.add_row(["A", "B", "C"])
table.add_row(["F", "O", "O"])
table.add_row(["B", "A", "R"])

for row in table:
    print row.get_string(fields=["Column 1"]) # Column 1

补充一下:如果你只想要值,不需要表头或边框的话,下面的代码应该可以满足你的需求:

from prettytable import PrettyTable

table = PrettyTable(["Column 1", "Column 2", "Column 3"])
table.add_row(["A", "B", "C"])
table.add_row(["F", "O", "O"])
table.add_row(["B", "A", "R"])

for row in table:
    row.border = False
    row.header = False
    print row.get_string(fields=["Column 1"]).strip() # Column 1

撰写回答