Вопрос

str = r'c:\path\to\folder\'   # my comment
  • IDE: Eclipse
  • Python2.6.

Когда последний символ в строке - это обратная косание, похоже, что он изберет последней одной цитаты и обрабатывает мой комментарий как часть строки. Но сырая строка должна игнорировать все символы escape, верно? Что может быть не так? Спасибо.

Это было полезно?

Решение

Сырые строковые литералы не обращаются к обратным чертам, как инициирующие escape последовательности кроме Когда немедленно следующий персонаж - символ цитата, который разграничивает буквальный, в этом случае обратная косание делает избежать этого.

Мотивация дизайна заключается в том, что сырые строковые литералы действительно существуют только для удобства входа в узор регулярных выражений - то есть все, нет Другой объективный дизайн существует для таких литералов. И рисунки никогда не должны заканчиваться обратной ячейкой, но они мощь Нужно включить все виды цитата символов, откуда правило.

Многие люди пытаются использовать необработанные строковые литералы для того, чтобы они могли ввести путь Windows, как они используются для (с обратной черными косами) - но, поскольку вы заметили, что это использование ломается, когда вам нужен путь к концу с обратной ячейкой. Обычно самое простое решение должно использовать вперед Slashes, которые Microsoft's C Runtime и вся версия Python поддерживают как полностью эквивалентны по путям:

s = 'c:/path/to/folder/'

(Примечание: не Тень встроенные имена, как str, С вашими собственными идентификаторами - это ужасная практика, без каких-либо родов, и если вы не попадаете в привычку избежать этой ужасной практики однажды, вы найдете yourSeld с неприятной проблемой отладки, когда какая-то часть ваших трамплина над встроенным именем и другую часть необходимо использовать Настроенное имя в своем реальном значении).

Другие советы

Это IMHO непоследовательность в Python, но он описан в документации. Перейти к второму последнему абзацу:

http://docs.python.org/reference/lexical_analysiS.html#string-literals.

R "" не является действительным строковым литералом (даже необрабатывающая строка не может закончиться нечетным числом обратной косой черты)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top