2017-01-16 6 views
1

Есть ли простой способ распечатать строку, содержащую новую строку \n, выровненную влево после определенного количества символов?Печать строки с новыми строками, выровненными в Python

В принципе, то, что у меня есть что-то вроде

A = '[A]: ' 
B = 'this is\na string\nwith a new line' 

print('{:<10} {}'format(A, B)) 

Проблема в том, что с новой строки, следующие строки не начинаются на 10-й колонке:

[A]:  this is 
a string 
with a new line 

Я хотел бы что-то как

[A]:  this is 
      a string 
      with a new line 

Я мог бы, возможно, разделить B, но мне было интересно, если ж как Optial способ сделать это

+0

Как насчет замены '' \ n'' '' \ n ''? (включая 10 пробелов). –

ответ

2

Простой способ для достижения этой цели является замена новой линии с новой строки и 11 (11 из 10 в {:<10} но добавить дополнительное пространство в вашем формате) пространств:

B2 = B.replace('\n','\n   ') 
print('{:<10} {}'.format(A, B2)) 

Или, возможно, более элегантно:

B2 = B.replace('\n','\n'+11*' ') 
print('{:<10} {}'.format(A, B2)) 

Запуск этого в python3:

$ python3 
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> A = '[A]: ' 
>>> B = 'this is\na string\nwith a new line' 
>>> B2 = B.replace('\n','\n   ') 
>>> print('{:<10} {}'.format(A, B2)) 
[A]:  this is 
      a string 
      with a new line 
+0

вы должны изменить 10 пробелов на 9 из-за пробела после «:» в A – latsha

+0

@ latsha: спасибо, что указали это. –

+0

@latsha: euh не должно быть 11, я подсчитал количество пробелов на новую строку на основе последнего фрагмента в вопросе. –