относительно обратной косой черты от postgresql - PullRequest
0 голосов
/ 19 ноября 2010

У меня вопрос noob.

У меня есть запись в таблице, которая выглядит как '\ 1abc'

Затем я использую эту строку в качестве замены регулярного выражения в re.sub("([0-9])",thereplacement,"2")

Я немного запутался с обратными слешами.Строка, которую я получил, была "\\1abc"

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Обратите внимание, что вы можете заставить \ перестать быть escape-символом, установив для параметра standard_conforming_strings значение on.

2 голосов
/ 19 ноября 2010

Интерактивно ли вы используете python?

В обычной строке вам необходимо избежать обратной косой черты в вашем коде или использовать r "..." (ссылка на docs ). Если вы используете Python интерактивно и не присваиваете результаты из вашей базы данных переменной, он будет распечатан с использованием метода __repr__().

>>> s = "\\1abc"
>>> s
'\\1abc' # <-- How it's represented in Python code
>>> print s
\1abc # <-- The actual string

Кроме того, ваш re.sub немного странный. 1) Может быть, вы имели в виду [0-9] как образец? (Соответствует одной цифре). Аргументы, вероятно, тоже переключаются, если thereplacement является вашим вводом. Это синтаксис:

re.sub(pattern, repl, string, count=0)

Так что я думаю, вы ожидаете что-то вроде этого:

>>> s_in  = yourDbMagic() # Which returns \1abc
>>> s_out = re.sub("[0-9]", "2", s_in)
>>> print s_in, s_out
\1abc \2abc

Редактировать: Пытался лучше объяснить побег / представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...