\
- escape-символ в строковых литералах Python .
Например, если вы хотите поместить символ табуляции в строку, вы должны сделать:
>>> print("foo \t bar")
foo bar
Если вы хотите поместить литерал \
в строку, вы должны использовать \\
:
>>> print("foo \\ bar")
foo \ bar
Или используйте «необработанную строку»:
>>> print(r"foo \ bar")
foo \ bar
Вы не можете просто поставить обратную косую черту в строковых литералах, когда захотите. Обратная косая черта недопустима, если за ней не следует ни одна из допустимых escape-последовательностей, и более новые версии Python выводят предупреждение об устаревании . Например, \A
не является escape-последовательностью:
$ python3.6 -Wd -c '"\A"'
<string>:1: DeprecationWarning: invalid escape sequence \A
Если ваша последовательность обратной косой черты случайно совпадает с одной из escape-последовательностей Python, но вы этого не имели в виду, это еще хуже.
Так что вы всегда должны использовать необработанные строки или \\
.
Важно помнить, что строковый литерал все еще является строковым литералом, даже если эта строка предназначена для использования в качестве регулярного выражения. Синтаксис регулярного выражения Python поддерживает множество специальных последовательностей, которые начинаются с \
. Например, \A
соответствует началу строки. Но \A
недопустимо в строковом литерале Python! Это неверно:
my_regex = "\Afoo"
Вместо этого вы должны сделать это:
my_regex = r"\Afoo"
Строки документа - это еще одно, что нужно помнить: строки документов также являются строковыми литералами, и недопустимые последовательности \
также недопустимы в строках документов! Используйте необработанные строки (r"""..."""
) для строк документации, если они содержат \
.