Как я могу включить специальные символы (табуляция, новая строка) в строку результата проверки документа python?

Учитывая следующий скрипт python:

# dedupe.py
import re

def dedupe_whitespace(s,spacechars='\t '):
    """Merge repeated whitespace characters.
    Example:
    >>> dedupe_whitespace(r"Green\t\tGround")  # doctest: +REPORT_NDIFF
    'Green\tGround'
    """
    for w in spacechars:
        s = re.sub(r"("+w+"+)", w, s)
    return s

Функция работает как и предполагалось в интерпретаторе python:

$ python
>>> import dedupe
>>> dedupe.dedupe_whitespace('Purple\t\tHaze')
'Purple\tHaze'
>>> print dedupe.dedupe_whitespace('Blue\t\tSky')
Blue    Sky

Однако пример doctest не работает, потому что символы табуляции преобразуются в пробелы перед сравнением со строкой результата:

>>> import doctest, dedupe
>>> doctest.testmod(dedupe)

дает

Failed example:
    dedupe_whitespace(r"Green           Ground")  #doctest: +REPORT_NDIFF
Differences (ndiff with -expected +actual):
    - 'Green  Ground'
    ?       -
    + 'Green Ground'

Как я могу кодировать символы табуляции в строке doctest heredoc, чтобы сравнение результатов тестирования выполняется правильно?

19
задан hobs 25 September 2015 в 19:44
поделиться