用python缩进打印

2024-09-28 05:17:11 发布

您现在位置:Python中文网/ 问答频道 /正文

有办法打印以下内容吗

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

因此,比终端长度还宽的长消息总是包装(从同一位置开始)? 举个例子

Username:              LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT

应该变成

Username:              LEFTLEFTLEFTLEFTLEFTLEFTLEFT
                       RIGHTRIGHTRIGHT

Tags: 终端消息messageusername例子print办法user
3条回答

我想你要找的是^{}模块:

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)

如果你重复这样做,你可能会想把这个混乱包装在一个函数中。

我建议使用format向左缩进,例如:

print 'Username: {:>40}'.format('Foo')
print '          {:>40}'.format('FooBar')

将导致:

Username:                                      Foo
                                            FooBar

还有

print '{:<30}{:<40}'.format('UserName:','Foo')
print '{:<30}{:<40}'.format('User:','FooBar')
print '{:<30}{:<40}'.format('','FooBar42')

将导致:

UserName:                     Foo                                     
User:                         FooBar                                  
                              FooBar42     

等等。。。

您可以使用^{}将每一行填充到所需的宽度,如下所示:

line_width = 20
print "Username:".ljust(line_width) + "LEFT"*6
print "".ljust(line_width) + "RIGHT"*3

传递给ljust的参数是您希望字符串的长度,只要这是一致的,那么这些行应该正确对齐。

或者,可以在只需要填充的行上使用字符串乘法,如下所示:

print " "*line_width + "RIGHT"*3

这将具有与上述代码中最后一行完全相同的输出。

相关问题 更多 >

    热门问题