2024-09-28 05:17:11 发布
网友
有办法打印以下内容吗
print user + ":\t\t" + message
因此,比终端长度还宽的长消息总是包装(从同一位置开始)? 举个例子
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
应该变成
我想你要找的是^{}模块:
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。而且,因为前缀实际上以两个制表符结尾,所以更加复杂。这是我想到的最简单的方法:
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的参数是您希望字符串的长度,只要这是一致的,那么这些行应该正确对齐。
ljust
或者,可以在只需要填充的行上使用字符串乘法,如下所示:
print " "*line_width + "RIGHT"*3
这将具有与上述代码中最后一行完全相同的输出。
我想你要找的是^{} 模块:
这张照片:
如果您真的想在缩进中使用制表符,那就有点麻烦了,因为您必须首先展开
initial_indent
来找出要使用的正确subsequent_indent
。而且,因为前缀实际上以两个制表符结尾,所以更加复杂。这是我想到的最简单的方法:如果你重复这样做,你可能会想把这个混乱包装在一个函数中。
我建议使用format向左缩进,例如:
将导致:
还有
将导致:
等等。。。
您可以使用^{} 将每一行填充到所需的宽度,如下所示:
传递给
ljust
的参数是您希望字符串的长度,只要这是一致的,那么这些行应该正确对齐。或者,可以在只需要填充的行上使用字符串乘法,如下所示:
这将具有与上述代码中最后一行完全相同的输出。
相关问题 更多 >
编程相关推荐