Search code examples
pythonword-wrap

Extra space in the first line when use textwrap.indent()


sample_text = '''
        The textwrap module can be used to format text for output in
        situations where pretty-printing is desired.  It offers
        programmatic functionality similar to the paragraph wrapping
        or filling features found in many text editors.
    '''
dedented_text = textwrap.dedent(sample_text)
wrapped = textwrap.fill(dedented_text, width=50)
final = textwrap.indent(wrapped, '> ')

print('Quoted block:\n')
print(final)

output is:

>  The textwrap module can be used to format text
> for output in situations where pretty-printing is
> desired.  It offers programmatic functionality
> similar to the paragraph wrapping or filling
> features found in many text editors.

Just trying to understand why is there an extra space at the first line in the beginning?


Solution

  • Take a look at repr(sample_text):

    '\n        The textwrap module can be used to format text for output in\n        situations where pretty-printing is desired.  It offers\n        programmatic functionality similar to the paragraph wrapping\n        or filling features found in many text editors.\n    '
    

    Notice the \n at the beginning?

    To achieve your desired output, you have to escape it. Put \ at the beginning of the string:

    sample_text = '''\
        The textwrap module can be used to format text for output in
        situations where pretty-printing is desired. It offers
        programmatic functionality similar to the paragraph wrapping
        or filling features found in many text editors.
    '''