Необработанные строковые литералы не обрабатывают обратные слэши как инициирующие escape-последовательности , за исключением , когда сразу следующий символ является символом кавычки, который ограничивает литерал, в этом случае обратный слеш делает избегайте его.
Мотивация проектирования заключается в том, что необработанные строковые литералы действительно существуют только для удобства ввода шаблонов регулярных выражений - вот и все, нет существует другая цель проектирования для таких литералов.И шаблоны RE никогда не должны заканчиваться обратной косой чертой, но они могут включать в себя все виды символов кавычек, откуда следует правило.
Многие люди пытаются использовать необработанные строковые литералы для включенияони вводят пути Windows так, как они привыкли (с обратной косой чертой) - но, как вы заметили, это использование прерывается, когда вам нужен путь, заканчивающийся обратной косой чертой.Как правило, самое простое решение - использовать forward slash, которые Microsoft C и все версии Python поддерживают как полностью эквивалентные в путях:
s = 'c:/path/to/folder/'
(примечание: don't теневые встроенные имена, такие как str
, с вашими собственными идентификаторами - это ужасная практика, без каких-либо улучшений, и если вы не привыкнете избегать этой ужасной практики, однажды вы обнаружите, что вас с неприятнымпроблема для отладки, когда какая-то часть вашего кода попирает встроенное имя, а другая часть должна использовать встроенное имя в его реальном значении).