如何访问忽略标题的单元格?

How to access a cell ignoring the Title?

我正在尝试从 pretty table 访问单元格的元素。当我尝试漂亮 table 的标题也作为输出的一部分出现时。有没有办法忽略它?

from prettytable import PrettyTable

table = PrettyTable(["Column 1", "Column 2", "Column 3"])
table.title = 'TESTING'
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())

输出如下:

| TESTING |
  A
| TESTING |
  F
| TESTING |
  B

但我只想要字段,尤其是单元格值,而不想要标题。 有好心人帮忙吗

我尝试搜索 prettytable 的文档,但无法在线找到它。

看起来 get_string 并没有提供直接的 API 来实现这一点,但我们可以通过使用 \r 作为临时标题并使用 NONE 对于 vrules:

from prettytable import PrettyTable, NONE
...
for row in table:
    print(row.get_string(fields=['Column 1'],
                         border=False,
                         header=False,
                         title='\r',
                         vrules=NONE).strip())

或者我们可以使用 lower-level API:

for row in table.rows:
    print(row[0])

两者都会输出

A
F
B

要获取特定单元格的值,您可以使用 startstop 参数,它们是 zero-based 和 inclusive-exclusive(如 Python 的 range):

print(table.get_string(fields=['Column 1'],
                       border=False,
                       header=False,
                       title='\r',
                       vrules=NONE,
                       start=1,
                       end=2).strip())

会输出

F

PyPI 的文档显示了以下样式选项

border - 布尔选项(必须为 True 或 False)。控制是否在 table.

周围绘制边框

header - 布尔选项(必须为 True 或 False)。控制 table 的第一行是否是显示所有字段名称的 header。

hrules - 控制行后水平线的打印。允许值:FRAME、HEADER、ALL、NONE - 请注意,这些是在 prettytable 模块中定义的变量,因此请确保导入它们或使用 prettytable.FRAME 等。

vrules - 控制列之间垂直规则的打印。允许值:FRAME、ALL、NONE.

所以尝试以下 -

table.border = False
table.header = False
table.vrules = 2
table.title = ''

其次是

print(table[:])

for row in table:
    print(row)