Python文本包装在字符串模板中

时间:2016-02-18 03:11:10

标签: python string textwrapping

我有不同长度的字符串,我想在模板中打印如下:

printTemplate = "{0:<5}|{1:<55}|{2:<20}"
print printTemplate.format("ID", "Text", "Category")
    for (docId, text, category) in textList:
        print printTemplate.format(docId, text, category)

哪个出来了,

ID   |Text                                                   |Category
1500 |Monet is the French painter I have liked the best      |Painting
...

问题是文本字符串有时超过55个字符,这会破坏格式。我尝试过使用TextWrapper,

from textwrap import TextWrapper
wrapper = TextWrapper(width=55)
...
        print printTemplate.format(docId, wrapper.fill(text), category)

但这似乎没有帮助。一个想法?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用PrettyTable自动将输出格式化为列。

from prettytable import PrettyTable

x = PrettyTable(["ID", "Text", "Category"])
for (docId, text, category) in textList:
    x.add_row([docId, text, category])
print x

答案 1 :(得分:0)

您需要按如下方式组合截断和填充:

printTemplate = "{0:<5}|{1:55.55}|{2:<20}"
通过示例解释各种格式化程序,

This post可能会有很大帮助。