Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2008 10:53:17

Lolka
От:
Зарегистрирован: 2007-09-29
Сообщения: 128
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог stripslashes()

Товарищи, может быть совершенно бестолковый вопрос, но как бороться со слешами, кавычками в строках?
Кавычки как одинарные так и двойные.

In [23]: "test\"
------------------------------------------------------------
File "<ipython console>", line 1
"test\"
^
SyntaxError: EOL while scanning single-quoted string
In [24]: "test\".strip("\")
------------------------------------------------------------
File "<ipython console>", line 1
"test\".strip("\")
^
SyntaxError: invalid token
In [25]: from re import escape
In [26]: escape("test\")
------------------------------------------------------------
File "<ipython console>", line 1
escape("test\")
SyntaxError: EOL while scanning single-quoted string
Спасибо.



Отредактировано (Май 14, 2008 10:54:00)

Офлайн

#2 Май 14, 2008 11:02:52

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог stripslashes()


>>> “test\\”
'test\\'
>>> print “test\\”
test\
>>> “test\\”.strip(“\\”)
'test'
>>> from re import escape
>>> escape(“test\\”)
'test\\\\'
>>> print escape(“test\\”)
test\\
>>> print “some \”text\“”
some “text”
>>>



Офлайн

#3 Май 14, 2008 11:38:28

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Аналог stripslashes()

Ммммб между прочим - везде в литературе написано.
\ - экранирует любой символ после себя - то есть выводит его как есть.
\\ - выводит \
\“ - выводит ”
и так далее. Кроме \n \t - так задаются специяльные симвлы, типа перевода строки или табуляции.

Офлайн

#4 Май 14, 2008 15:42:59

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Аналог stripslashes()

poltergeist
from re import escape
В данном случае лучше использовать встроенные методы строки encode/decode с кодировкой ‘string_escape’, т.к. re.escape будет блокировать escape-последовательности для регулярных варажений:
from re import escape
>>> escape('$ [.*abc\\')
'\\$\\ \\[\\.\\*abc\\\\'

а так он перекодирует символ табуляции:
>>> escape('\t')
'\\\t'
причина - предоплагается, что строка попадает с уже заблокированными обратными слэшами (как правило - просто набирается в виде raw выражения), а метод encode отрботает так:
>>> ‘$ [.*abc\\d\t’.encode('string_escape')
'$ [.*abc\\\\d\\t'



Отредактировано (Май 14, 2008 15:48:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version