我有一个noob问题。
我在表中看起来像'\ 1abc'
的记录然后我在re.sub("([0-9])",thereplacement,"2")
我对反斜杠有点困惑。我回来的字符串是"\\1abc"
答案 0 :(得分:2)
您是否正在使用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
编辑:试图更好地解释转义/表示。
答案 1 :(得分:2)
请注意,您可以通过将standard_conforming_strings设置为on来使\ stop成为转义字符。