有没有办法打印以下,
print user + ":\t\t" + message
Run Code Online (Sandbox Code Playgroud)
因此,比终端长度更宽的冗长消息总是包装(从相同位置开始)?所以例如这个
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT
Run Code Online (Sandbox Code Playgroud)
应该成为
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT
Run Code Online (Sandbox Code Playgroud)
aba*_*ert 24
我想你在这里寻找的是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)
Run Code Online (Sandbox Code Playgroud)
这打印:
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
Run Code Online (Sandbox Code Playgroud)
如果你真的想在缩进中使用制表符,这有点棘手,因为你必须首先使用制表符展开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)
Run Code Online (Sandbox Code Playgroud)
如果你反复这样做,你可能想要在一个函数中包装那个烂摊子.
ntg*_*ntg 12
在 Python 2 中,我建议使用format向左缩进,例如:
print '{:<30}{:<40}'.format('UserName:','Foo')
print '{:<30}{:<40}'.format('User:','FooBar')
print '{:<30}{:<40}'.format('','FooBar42')
Run Code Online (Sandbox Code Playgroud)
将导致:
UserName: Foo
User: FooBar
FooBar42
Run Code Online (Sandbox Code Playgroud)
等等...
对于 Python 3,请使用括号 :) 此外,使用f-strings可以更紧凑地编写相同的内容:
print (f"{'UserName:':<30}{'Foo':<40}")
print (f"{'User:':<30}{'FooBar':<40}")
print (f"{'':<30}{'FooBar42':<40}")
Run Code Online (Sandbox Code Playgroud)
还将导致:
UserName: Foo
User: FooBar
FooBar42
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用str.ljust()将每行填充到所需的宽度,如下所示:
line_width = 20
print "Username:".ljust(line_width) + "LEFT"*6
print "".ljust(line_width) + "RIGHT"*3
Run Code Online (Sandbox Code Playgroud)
您传递给的参数ljust是您希望字符串的长度,只要这是一致的,线条应该正确排列.
或者,您可以在需要填充的行上使用字符串乘法,如下所示:
print " "*line_width + "RIGHT"*3
Run Code Online (Sandbox Code Playgroud)
这将与上面代码中的最后一行具有完全相同的输出.
| 归档时间: |
|
| 查看次数: |
37763 次 |
| 最近记录: |