Использовать необработанную строку:
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
Обратите внимание, что хотя это выглядит неправильно, на самом деле это правильно. В строке есть только один обратный слеш foo
.
Это происходит потому, что когда вы просто набираете foo
в приглашении, python отображает результат __repr__()
в строке. Это приводит к следующему (обратите внимание только на один обратный слеш и без кавычек вокруг строки print
ed):
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
>>> print foo
baz "\"
И давайте продолжим, потому что есть еще трюки с обратной косой чертой. Если вы хотите иметь обратную косую черту в конце строки и использовать метод, описанный выше, вы столкнетесь с проблемой:
>>> foo = r'baz \'
File "<stdin>", line 1
foo = r'baz \'
^
SyntaxError: EOL while scanning single-quoted string
Необработанные строки не работают должным образом, когда вы делаете это. Вы должны использовать обычную строку и избежать обратной косой черты:
>>> foo = 'baz \\'
>>> print foo
baz \
Однако, если вы работаете с именами файлов Windows, вам не по себе. То, что вы хотите сделать, это использовать косую черту и функцию os.path.normpath()
:
myfile = os.path.normpath('c:/folder/subfolder/file.txt')
open(myfile)
Это спасет вас от побега и слез. Эта страница была полезна, когда проходила через некоторое время назад.