我正在使用python模块BeautifulTable向控制台发出一个表。它包装了一些标题和内容,我想设置单元格宽度,所以它不会这样做。
我已尝试通过table.column_widths设置宽度(根据文档),但似乎没有任何效果。
答案 0 :(得分:3)
来自docs:
column_widths
获取/设置表格列的宽度。
列的宽度指定列可包含的最大字符数。根据width_exceed_policy的值处理较大的字符。
因此,column_widths仅处理列中的最大字符数。为了处理溢出文本,必须使用width_exceed_policy
。
table.width_exceed_policy = BeautifulTable.WEP_ELLIPSIS
从文档中可以看出以下内容之一:
BeautifulTable.WEP_WRAP
:项目被包装,因此每行都符合其列宽。BeautifulTable.WEP_STRIP
:项目被剥离以适合其列。BeautifulTable.WEP_ELLIPSIS
:项目被剥离以适合其列并附加...(省略号)。答案 1 :(得分:2)
对于v0.8.0,对于docs和change log,可以通过设置/proc/net/arp
属性来控制列宽:
column_widths
请注意,最新的更改日志还说它放弃了对Python v3.3的支持 我只在Python v3.7.5中对此进行了测试,在该版本中,一旦再次打印该表,这些值就会被覆盖。
如果您使用的是v3.3 +,并且您不想截断或包装标题/字段,那么我发现的唯一“解决方法”是将>>> table.column_widths = 5
>>> print(table.column_widths)
PositiveIntegerMetaData<5, 5, 5, 5, 5, 5, 5>
>>> table.column_widths = [10, 20, 5, 7, 10, 10, 5]
>>> print(table.column_widths)
PositiveIntegerMetaData<10, 20, 5, 7, 10, 10, 5>
设置为一个较大的值足以容纳所有行内容+填充+边框:
max_table_width
当然,这有其明显的局限性。
答案 2 :(得分:1)
您可以使用table.columns.width
来指定宽度,例如
table.columns.width = 30
或
table.columns.width = [20, 30, 40]
如果表中包含动态数据,最好将maxwidth
从默认的80
增加:
table = BeautifulTable(maxwidth=120)
在将数据放入列之前,您也可以自己包装所需的宽度。 textwrap
stdlib模块可能对此有用。对于JSON数据,使用json.dumps()
进行漂亮打印可能会有所帮助,例如:
json.dumps(data, indent=2)
答案 3 :(得分:1)
如果使用的是 BeautifulTable 1.0.0 ,则语法如下:
GET http://.../[object%20File] 404 (Not Found)
调用table.columns.width = [12,5,8,10,6,33]
print(table)
时,较旧的语法table.column_widths = [12,5,8,10,6,33]
往往会被自动覆盖。
来自官方release notes:
BeautifulTable.columns.width(先前的BeautifulTable.column_widths)的更新行为。默认情况下,它不再覆盖用户指定的宽度。您可以通过将其设置为“自动”将其重置为默认值