有没有办法打印以下内容,
print user + ":\t\t" + message
这样,比终端长度还长的长消息总是会自动换行(从同一位置开始)?因此例如
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
应该成为
我认为您在这里寻找的是textwrap模块:
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的用法。而且,由于您的前缀实际上以两个选项卡 结尾 ,因此更加复杂。这是我想出的最简单的方法:
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)
如果重复执行此操作,则可能需要将这些混乱包装在函数中。