В синтаксисе необработанных строк escape-последовательности не имеют особого значения (кроме обратной косой черты перед цитатой). Символы \
плюс n
образуют два символа в строковом литерале, в отличие от обычного строкового литерала, где эти два символа заменяются символом новой строки.
Фактический символ новой строки, с другой стороны, равен не escape-последовательность. Это просто символ новой строки и включен в строку как таковую.
Сравните это с использованием 1
по сравнению с \x31
; последняя является escape-последовательностью для кодового пункта ASCII для цифры 1
. В обычном строковый литерал, и даст вам характер 1
, в качестве исходного строкового литерала, то последовательность выхода не будет истолковано:
>>> print('1\x31')
11
>>> print(r'1\x31')
1\x31
Все это не имеет ничего общего с круглыми скобками. Скобки не изменяют поведение исходной строки r'''...'''
. точно такая же вещь происходит, когда вы удалите скобки:
>>> a = r'''\n1'''
>>> a
'\\n1'
>>> print(a)
\n1
>>> b = r'''
... 2'''
>>> b
'\n2'
>>> print(b)
2
Почему это непоследовательно? * Escape последовательности * не работают, но фактическая строка новой строки не является escape-последовательности. –
Не используйте строку с тремя кавычками, когда вы не хотите добавлять лишние пробелы, вкладки и символы новой строки. – pythad
Подробнее об этом читайте в документах. https://docs.python.org/2/reference/lexical_analysis.html#string-literals и этот ответ SO http://stackoverflow.com/q/4415259/4099593 –