Python doctest with newline characters: inconsistent leading whitespace error Python doctest with newline characters: inconsistent leading whitespace error python python

Python doctest with newline characters: inconsistent leading whitespace error


The docstring docs actually allude to the problem, but not entirely clearly.

A couple of other stackoverflow threads here and here were helpful, but not easy to find given my own search criteria.

Here is my actual solution:

def remove_CRs(text):    r"""    >>> output = remove_CRs("line1 \r"    ...                     "still line1\n"    ...                     "now line2 \r"    ...                     "more line2\r")    >>> print(output)    line1 still line1    now line2 more line2    """    return text.replace('\r', '')import doctestdoctest.run_docstring_examples(remove_CRs, globals())

Three things have changed from the original code snippet:

  1. The docstring had to be a raw python string.
  2. I had to use print() on the function output.
  3. I had to get over my own confusion with the difference between \n and \r. (That one's on me.)

Hope this saves someone else the couple of hours I spent on this.


You need to escape the backslash.

The docstring is itself a string where \n means newline. In

def foo():    """    print "Hello world\n";    """    pass

the docstring doesn't contain a valid Python statement but contains instead a newline inside the quoted string


Just prefixing my docstring with 'r' worked in my case. Python 3.5.1.