Python textwrap.wrap вызывает проблему с \ n

Поэтому я просто переформатировал кучу кода, чтобы включить textwrap.wrap, только чтобы обнаружить, что все мои \ n исчезли. Вот пример.

from textwrap import wrap

def wrapAndPrint (msg, width=25):
  """ wrap msg to width, then print """

  message = wrap(msg, width)
  for line in message:
    print line

msg = ("Ok, this is a test. Let's write to a \nnewline\nand then "
       "continue on with this message")

Если я напечатаю сообщение, я получаю следующее

>>> print msg
Ok, this is a test. Let's write to a 
newline
and then continue on with this message
>>> 

Однако, если я отправлю его в упаковку, это будет выглядеть так:

>>> wrapAndPrint(msg)
Ok, this is a test. Let's
write to a  newline and
then continue on with
this message
>>>

Я подумал, что это может иметь какое-то отношение к печати строк из списка, поэтому я попытался вызвать определенные индексы, поэтому я попытался сделать свой цикл for более похожим на это:

x = 0
for line in message:
  print line[x]
  x += 1

Но это не имело никакого значения. Итак, что мне здесь не хватает или что я делаю не так? Мне действительно нужны новые строки, и мне также действительно нужно, чтобы мой текст был обернут.


person jtsmith1287    schedule 15.10.2012    source источник


Ответы (1)


По умолчанию функция wrap() заменяет символы пробела (включая новую строку) одним пробелом. Вы можете отключить это, передав аргумент ключевого слова replace_whitespace=False.

http://docs.python.org/library/textwrap.html#textwrap.TextWrapper.replace_whitespace

person jobo3208    schedule 15.10.2012
comment
Черт, как я это пропустил? Спасибо! - person jtsmith1287; 16.10.2012