Python的BeautifulTable修改输出

Python's BeautifulTable modifies output

我正在从 dict 构建一个 BeautifulTable table,它的键是字符串数字集(例如“21608”、“32099”、“02978”)。字典的键将成为我的 table:

的第一列
for (key, value) in stations.items():
    table.rows.append([key] + value)          # 'value' is a list, so here I just concatenate [key] and [value1, ..., valueN] to form new list [key, value1, ..., valueN] to add to the table

当我尝试使用 print(table) 命令打印(到 stdout 或 txt 文件)table 时出现问题。

for (key, value) in stations.items():
    table.rows.append([key] + value)
print(table)

问题是:第一列所有以“0”开头的数字组(例如“02978”、“02186”),被修改,以便第一个“0”被剥夺。

输出table

然后我试图在将它们附加到 table:

之后将它们逐行打印出来并列出
for (key, value) in stations.items():
    table.rows.append([key] + value)
    print(list(table.rows[-1]))

此输出根据需要显示数据,没有去除零:

为什么是这个结果?原因是在BeautifulTabletables的repr()方法中?我不太明白为什么它会在输出过程中以任何方式修改字符串类型。任何想法,我该如何避免它?

It's being converted into an int/float

The current behaviour is that, if a string can be parsed as a float/int, it will be parsed as a float/int

>>> import beautifultable
>>> table = beautifultable.BeautifulTable()
>>> table.append_row(['foo', '012345'])
>>> print(table)
+-----+-------+
| foo | 12345 |
+-----+-------+

您可以使用 detect_numerics=False 来禁用此行为。

>>> table = beautifultable.BeautifulTable(detect_numerics=False)
>>> table.append_row(['foo', '012345'])
>>> print(table)
+-----+--------+
| foo | 012345 |
+-----+--------+