Python制表:如何实现制表自动排行?

Python tabulate: how to achieve auto lining in tabulate?

from tabulate import tabulate
table_header = ['Options', 'Explain','Impact']
table_data = []
for i in self.add_list:
    table_data.append( (somethingtoprint) )
pfile.write(tabulate(table_data, headers=table_header, tablefmt='grid'))

此处,当 somethingtoprint 是很长的字符串时,输出格式已损坏。有什么办法可以更漂亮的使用tabulate吗?

更新:我的意思是 table 内容太长,超过了屏幕宽度,显示可能会混乱。

喜欢

身份证名

123"zzzzzzzzzzzzzzzzadsas daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

谢谢

我无法发表评论。这个 "very long string" 是什么样子的?我在下面使用了这段代码,对我来说效果很好。我的超长字符串有 2,970 个字符。

table = [["Sun"*990 ,696000,1989100000],["Earth",6371,5973.6],
          ["Moon",1737,73.5],["Mars",3390,641.85]]
print(tabulate(table))

处理评论。是的,就是这样,因为字符串中没有 returns 行。我猜包的作者不想随意添加行 returns。您可以插入您自己的行 returns 并且 tabulate 将处理它们。输出取决于字体大小和屏幕宽度。如果该行的长度超过您的屏幕宽度,则它会换行。我认为这就是你所说的看起来很糟糕的意思。您可以输出到文件并查看它(确保关闭任何换行功能)。

这是一个如何做到这一点的例子。

from tabulate import tabulate
from pathlib import Path

table = [["Sun"*990,696000,1989100000],["Earth",6371,5973.6],
          ["Moon",1737,73.5],["Mars",3390,641.85]]

file_output = Path('test.txt')
file_output.write_text(tabulate(table))