← Все вопросы
Что такое сырые строки r'' и зачем экранировать обратный слэш?
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 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.