gpt4 book ai didi

python - 使用terminaltables,如何将所有数据保存在单个表中,而不是拆分到多个表中?

转载 作者:行者123 更新时间:2023-12-01 04:54:23 24 4
gpt4 key购买 nike

我在使用终端表打印表格时遇到问题。

这是我的主要脚本:

from ConfigParser import SafeConfigParser
from terminaltables import AsciiTable

parser = SafeConfigParser()
parser.read('my.conf')

for section_name in parser.sections():
description = parser.get(section_name,'description')
url = parser.get(section_name,'url')
table_data = [['Repository', 'Url', 'Description'], [section_name, url, description]]
table = AsciiTable(table_data)
print table.table

这是配置文件my.conf:

[bug_tracker]
description = some text here
url = http://localhost.tld:8080/bugs/
username = dhellmann
password = SECRET

[wiki]
description = foo bar bla
url = http://localhost.tld:8080/wiki/
username = dhellmann
password = SECRET

这会为每个条目打印一个表格,如下所示:

+-------------+---------------------------------+------------------------+
| Repository | Url | Description |
+-------------+---------------------------------+------------------------+
| bug_tracker | http://localhost.foo:8080/bugs/ | some text here |
+-------------+---------------------------------+------------------------+
+------------+---------------------------------+-------------+
| Repository | Url | Description |
+------------+---------------------------------+-------------+
| wiki | http://localhost.foo:8080/wiki/ | foo bar bla |
+------------+---------------------------------+-------------+

但我想要的是这样的:

+-------------+---------------------------------+------------------------+
| Repository | Url | Description |
+-------------+---------------------------------+------------------------+
| bug_tracker | http://localhost.foo:8080/bugs/ | some text here |
+-------------+---------------------------------+------------------------+
| wiki | http://localhost.foo:8080/wiki/ | foo bar bla |
+-------------+---------------------------------+------------------------+

如何修改脚本以获得此输出?

最佳答案

问题是您在循环的每次迭代中重新创建table_datatable。您在每次迭代时进行打印,然后旧数据被丢弃,新表从头开始。您正在创建的表格主体没有重叠。

您应该有一个table_data,它以标题开头,然后在打印任何内容之前收集所有表格数据。在循环的每次迭代中添加新条目,并在 for 循环完成后放置 print 语句。这是一个例子:

from ConfigParser import SafeConfigParser
from terminaltables import AsciiTable

parser = SafeConfigParser()
parser.read('my.conf')

table_data = [['Repository', 'Url', 'Description']]

for section_name in parser.sections():
description = parser.get(section_name,'description')
url = parser.get(section_name,'url')
table_data.append([section_name, url, description])

table = AsciiTable(table_data)
print table.table

它的输出如下:

+-------------+---------------------------------+----------------+
| Repository | Url | Description |
+-------------+---------------------------------+----------------+
| bug_tracker | http://localhost.tld:8080/bugs/ | some text here |
| wiki | http://localhost.tld:8080/wiki/ | foo bar bla |
+-------------+---------------------------------+----------------+

如果您想在 bug_tracker 和 wiki 行之间有一条水平线,那么您需要将 table.inner_row_border 设置为 True。因此,您可以将最后两行替换为:

table = AsciiTable(table_data)
table.inner_row_border = True
print table.table

关于python - 使用terminaltables,如何将所有数据保存在单个表中,而不是拆分到多个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com