Форум сайта python.su
0
>>> r'c:\dir1'
'c:\\dir1'
>>> r'c:\dir1\'
SyntaxError: EOL while scanning single-quoted string
>>>
Офлайн
1
r'c:\dir1\'Заэкранировали последнюю скобку. Вообще обратные слеши в стринге надо экранировать.
r'c:\\dir1\\'
Офлайн
0
Вообще обратные слеши в стринге надо экранировать.Разве? :)
>>> r'c:\\dir1\\'
'c:\\\\dir1\\\\'
Офлайн
0
FerromanВсегда казалось, что в raw стрингах не надо.
Вообще обратные слеши в стринге надо экранировать.
Офлайн
0
хм прикольно. похоже на баг в интерпретаторе. выходит что неформатированная строка не может содержать одинарный слэш в конце?)
f = open('123.txt', ‘w’)сохранит
f.write(r'ffff\\')
f.close()
Отредактировано (Март 6, 2009 17:34:18)
Офлайн
1
Действительно странно. Глюк судя по всему.
ЗЫ: если ставить пробел после последнего слеша - все ок.
Отредактировано (Март 6, 2009 18:18:10)
Офлайн
14
Потому что в 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.
Отредактировано (Март 6, 2009 19:56:35)
Офлайн
1
Документированный баг становится фичой. (с) Интернет
Офлайн
0
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()Офлайн
26
ReinRausХм… Смешно…
r'abc\ '.rstrip()
Офлайн