1

我的问题是:我想将制表符分隔格式的文本设置为一个漂亮的 ASCII 表。我可以使用 prettytable 做到这一点,这不是我目前的问题。问题是我有一列有很长的文本,我希望漂亮的可以将该文本切割成更小的部分。

我现在拥有的:

+------+------+--------------------------------------------------+
| Col1 | Col2 |                         Col3                     |
+----------------------------------------------------------------+
|     a|     b| 123456789123456789123456789123456789123456789123 |
|     d|     e| 123456789123456789123456789123456789123456789123 |
+------+------+--------------------------------------------------+

我想拥有的:

+------+------+---------------------+
| Col1 | Col2 |        Col3         |
+---------------------------- ------+
|     a|     b| 1234567891234567891 |
|      |      | 2345678912345678912 |
|      |      |      3456789123     |
|     d|     e| 1234567891234567891 |
|      |      | 2345678912345678912 |
|      |      |      3456789123     |
+------+------+---------------------+

我的代码如下:

import re
from prettytable import PrettyTable

imported = open("import_file.txt", "r")
x = PrettyTable()
x.field_names = ["Col1", "Col2", "Col3"]
for i in imported:
    red = re.split(r'\t', i)
    x.add_row(red)
with open('exit_file.txt', 'w') as exitfile:
    exitfile.write(str(x))

是否有可能在 python3 中使用 prettytable 做这样简单的事情,还是应该使用其他模块?

4

1 回答 1

0

我不确定是否有允许您执行此操作的功能,prettytable但有一个简单的解决方法可以完全实现您想要的。但是,这需要您import_file.txt在将值添加到表之前直接修改或解析并应用更改。

这是一个例子

['1', '2', '3'] 

如果转换成这样的格式

print("\n".join(['1', '2', '3'])

将逐行打印字符。

因此,在你的角色中添加换行符将迫使他们打破当前行并在同一个单元格中开始一个新行([row][col]=cell)。

于 2020-11-03T17:53:57.343 回答