← Все вопросы

Что такое сырые строки r'' и зачем экранировать обратный слэш?

Задан 11 месяцев назад1.2к просмотров3 ответа
14

Записываю путь к файлу "C:\new\test" и получаю кашу — где-то перенос строки, где-то табуляция. Видел запись с буквой r перед кавычкой. Что это и как правильно?

3 ответа

23
✓ Принятый ответ — помог автору

Проблема в том, что обратный слэш \ начинает спецпоследовательность: \n это перенос строки, \t — табуляция. Поэтому "C:\new\test" интерпретируется как C:, перенос строки, est.

Два решения:

# 1. экранировать каждый слэш — удвоить его
path = "C:\\new\\test"

# 2. сырая (raw) строка — префикс r, слэши не интерпретируются
path = r"C:\new\test"

Сырые строки удобны для путей Windows и особенно для регулярных выражений, где слэшей много. Нюанс: raw-строка не может заканчиваться на одиночный \.

Никита Масленко наконец понял что за r такое, спасибо за подробности 👍 · 11 месяцев назад
Дарк Драгон про регулярки прям в точку, там без r вообще ад · 11 месяцев назад
10

Префикс r отключает обработку спецсимволов: r"\n" это два символа (слэш и n), а "\n" — один перенос строки. Для путей и regex — мастхэв.

6

На Windows ещё можно просто использовать прямые слэши "C:/new/test" — Python их понимает в путях. Или pathlib.

Евгений Казбан не знал что прямые слэши тоже работают на винде, удобно · 11 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект