Печать с отступом в python
есть ли способ напечатать следующее,
print user + ":tt" + message
Так что длинные сообщения, которые шире, чем длина терминала всегда обертывания (начинается с той же позиции) ? так, например, это
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT
должны стать
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT
RIGHTRIGHTRIGHT
2 ответов
Я думаю, что вы ищете здесь 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
если вы действительно хотите использовать вкладки в отступе, это немного сложнее, потому что вам нужно сначала tab-развернуть 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)
если вы делаете это неоднократно, вы, вероятно, захотите обернуть этот беспорядок в функцию.
можно использовать str.ljust()
чтобы заполнить каждую строку до требуемой ширины, например:
line_width = 20
print "Username:".ljust(line_width) + "LEFT"*6
print "".ljust(line_width) + "RIGHT"*3
аргумент ljust
- это длина, которую вы хотите, чтобы строка была, пока она состоит, строки должны правильно выстраиваться.
в качестве альтернативы вы можете использовать умножение строк на строках, где вам просто нужно заполнение, например:
print " "*line_width + "RIGHT"*3
это будет иметь тот же самый результат, что и последняя строка в приведенном выше код.