Подтвердить что ты не робот

Что означает предыдущий строковый литерал с "r"?

Сначала я использовал его для построения регулярных выражений на нескольких строках в качестве аргумента метода для re.compile(), поэтому я предположил, что r означает RegEx.

Например:

regex = re.compile(
    r'^[A-Z]'
    r'[A-Z0-9-]'
    r'[A-Z]$', re.IGNORECASE
)

Итак, что означает r в этом случае? Зачем нам это нужно?

4b9b3361

Ответ 1

r означает, что строка должна обрабатываться как необработанная строка, что означает, что все escape-коды будут игнорироваться.

Пример:

'\n' будет рассматриваться как символ новой строки, а r'\n' будет рассматриваться как символы \, за которыми следует n.

Если присутствует префикс 'r' или 'r'символ, следующий за обратной косой чертой, включены в строку без изменений, и все обратные косые черты остаются в строка. Например, строка буквальный r"\n" состоит из двух символы: обратная косая черта и нижний регистр 'n'. Строковые кавычки могут быть сбежал с обратной косой чертой, но обратная косая черта остается в строке; для Например, r"\"" является допустимой строкой буквальный, состоящий из двух символов: обратная косая черта и двойная кавычка; r"\"не является допустимым строковым литералом (даже необработанная строка не может заканчиваться нечетным числом обратной косой черты). В частности, необработанный строка не может завершиться одним обратная косая черта (поскольку обратная косая черта избегайте следующего символа цитаты). Отметим также, что одна обратная косая черта интерпретируется новая строка как эти два символа как часть string, а не как продолжение строки.

Источник: Строковые литералы Python

Ответ 2

Это означает, что экранирование не будет переведено. Например:

r'\n'

- строка с обратным слэшем, за которой следует буква n. (Без r это будет новая строка.)

b поддерживает байтовую строку и используется в Python 3, где строки по умолчанию Unicode. В строках Python 2.x по умолчанию были байтовые строки, а youd использовать u для обозначения Unicode.