小编典典

在python中使用缩进进行打印

python

有没有办法打印以下内容,

print user + ":\t\t" + message

这样,比终端长度还长的长消息总是会自动换行(从同一位置开始)?因此例如

Username:              LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT

应该成为

Username:              LEFTLEFTLEFTLEFTLEFTLEFTLEFT
                       RIGHTRIGHTRIGHT

阅读 209

收藏
2021-01-20

共1个答案

小编典典

我认为您在这里寻找的是textwrap模块:

user = "Username"
prefix = user + ": "
preferredWidth = 70
wrapper = textwrap.TextWrapper(initial_indent=prefix, width=preferredWidth,
                               subsequent_indent=' '*len(prefix))
message = "LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT " * 3
print wrapper.fill(message)

打印:

Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
          LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
          LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT

如果您确实想在缩进中使用制表符,那会有些棘手,因为您必须先制表符扩展,initial_indent以找出正确subsequent_indent的用法。而且,由于您的前缀实际上以两个选项卡
结尾 ,因此更加复杂。这是我想出的最简单的方法:

user = "Username"
prefix = user + ":\t\t"
expanded_indent = textwrap.fill(prefix+'$', replace_whitespace=False)[:-1]
subsequent_indent = ' ' * len(expanded_indent)
wrapper = textwrap.TextWrapper(initial_indent=prefix,
                               subsequent_indent=subsequent_indent)
message = "LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT " * 3
print wrapper.fill(message)

如果重复执行此操作,则可能需要将这些混乱包装在函数中。

2021-01-20