2012-05-24 85 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我編輯了我的答案,現在它包含解決問題後編輯後顯示的問題。如果它對你有用,請不要忘記接受這個答案。 –