开发者

regarding backslash from postgresql

i have a noob question.

I开发者_运维问答 have a record in a table that looks like '\1abc'

I then use this string as a regex replacement in re.sub("([0-9])",thereplacement,"2")

I'm a little confused with the backslashes. The string i got back was "\\1abc"


Are you using python interactivly?

In regular string you need to escape backslashes in your code, or use r"..." (Link to docs). If you are running python interactivly and don't assign the results from your database to a variable, it'll be printed out using it's __repr__() method.

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

Also, your re.sub is a bit weird. 1) Maybe you meant [0-9] as the pattern? (Matching a single digit). The arguments are probably switche too, if thereplacement is your input. This is the syntax:

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

So my guess is you expect something like this:

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

Edit: Tried to better explain escaping/representation.


Note that you can make \ stop being an escape character by setting standard_conforming_strings to on.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜