2012-05-24 50 views
0

最近我提出这样的观察:词法分析蟒蛇

>>> x= "\'" 
>>> x 
"'" 
>>> y="'" 
>>> y 
"'" 
>>> print x 
' 
>>> print y 
' 

任何人都可以请解释为什么会这样。我正在使用Python 2.7.x.我对转义序列很了解。

我想要做以下事情: 我有一个带有单引号的字符串,我必须在数据库中输入它,所以我需要用反斜杠替换单引号(')的实例,然后单个引用(\')。我怎样才能做到这一点。

+3

什么是你期待相反,为什么? –

+0

[Python的词法分析章节](http://docs.python.org/reference/lexical_analysis.html#string-literals)可能有帮助。 – Makoto

+0

奥斯卡的回答解释了这里发生了什么。您可能会发现原始字符串也很有趣。 '>>> z = r“\'”' '>>> z' '“\\'”' – Darthfett

回答

6

在一对""里面,你不需要转义'这个字符。你当然可以,但是正如你所看到的那样没有必要,也没有任何影响。

这将会是必要逃避,如果你写一个'一对''内或"一对""内:

x = '\'' 
y = "\"" 

编辑:

关于最后部分在问题中,编辑后添加:

我有一个字符串与单引号,并且我必须将其输入到数据库中,所以我需要用单引号(')替换单引号(')的实例,后跟单引号(\')。我怎样才能做到这一点

以下任何方式将工作,请注意使用的raw strings为避免需要特殊字符转义:

v = "\\'" 
w = '\\\'' 
x = r'\'' 
y = r"\'" 

print v, w, x, y 
> \' \' \' \' 
+0

我不想逃避单引号我想添加一个反斜杠到字符串。我也尝试用反斜杠后跟单引号(\\')替换反斜杠,但它不起作用。 –

+0

@AmanDeepGautam它是如何失败的?什么是“打印”\\“”'打印? –

+0

@AmanDeepGautam我编辑了我的答案,现在它包含解决问题后编辑后显示的问题。如果它对你有用,请不要忘记接受这个答案。 –