Найти - Пользователи
Полная версия: Экранирование символов r''
Начало » Python для новичков » Экранирование символов r''
1 2
Psixo
>>> r'c:\dir1'
'c:\\dir1'
>>> r'c:\dir1\'
SyntaxError: EOL while scanning single-quoted string
>>>
Почему так? Python 2.5.*
Интерес, большей частью, теоретический :)
Ferroman
r'c:\dir1\'
Заэкранировали последнюю скобку. Вообще обратные слеши в стринге надо экранировать.
Правильно так:
r'c:\\dir1\\'
Psixo
Вообще обратные слеши в стринге надо экранировать.
Разве? :)

>>> r'c:\\dir1\\'
'c:\\\\dir1\\\\'
Positive
Ferroman
Вообще обратные слеши в стринге надо экранировать.
Всегда казалось, что в raw стрингах не надо.

Забавное поведение, конечно :)
test157
хм прикольно. похоже на баг в интерпретаторе. выходит что неформатированная строка не может содержать одинарный слэш в конце?)

f = open('123.txt', ‘w’)
f.write(r'ffff\\')
f.close()
сохранит

f\nfff\\

а как сохранить f\nfff\ ?)
Ferroman
Действительно странно. Глюк судя по всему.

ЗЫ: если ставить пробел после последнего слеша - все ок.
Андрей Светлов
Потому что в r'string' последний символ не может быть обратным слэшом. Вернее их количество в хвосте не может быть нечетным

Lanaguage reference: 2.4.1 String literals
When an “r” or “R” prefix is present, a character following a backslash is included in the string without change, and all backslashes are left in the string. For example, the string literal r“\n” consists of two characters: a backslash and a lowercase “n”. String quotes can be escaped with a backslash, but the backslash remains in the string; for example, r“\”“ is a valid string literal consisting of two characters: a backslash and a double quote; r”\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the string, not as a line continuation.
Ferroman
Документированный баг становится фичой. (с) Интернет
ReinRaus
test157
хм прикольно. похоже на баг в интерпретаторе. выходит что неформатированная строка не может содержать одинарный слэш в конце?)

f = open('123.txt', ‘w’)
f.write(r'ffff\\')
f.close()
сохранит

f\nfff\\

а как сохранить f\nfff\ ?)
f=open('123.txt', 'w')
f.write(r'abc\ '.rstrip())
f.close()
ZZZ
ReinRaus
r'abc\ '.rstrip()
Хм… Смешно…
r'abc\_'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB