2016-09-28 45 views
-2
dctLineItems = InvFunctions.dctLineItems 
    for value in dctLineItems.values(): 
     iORDER_ID = value[0] 
     iITEM_No = value[1] 
     iQUANTITY = value[2] 
     sTmp = value[3] 
     sTmp2 = sTmp.replace("'", "\'", 1) 
     #sTmp2 = connPy.escape(sTmp) 
     sITEM_Name = sTmp2 
     sPART_No = value[4] 
     fPRICE = value[5] 
     fPRICE = fPRICE.lstrip('$') 
     iDOGWOOD = value[6] 
     iADVANCED = value[7] 

我已經對它進行了廣泛的測試,並替換了除了我需要的任何東西以外的任何東西。當我嘗試用「\」替換「'」時,它什麼也不做。請注意註釋行#8 connPy.escape(sTmp),它不起作用,但這將是一個單獨的問題。python替換不會用「」代替「'」

+2

將反斜槓加倍,否則它只會轉義引用。 –

+4

你應該使用雙重scape「\\'」還是原始字符串r「\'」? –

+0

當'x'是'n','t'等特殊字符之一時,當'\ x'字符對產生特殊字符,否則*保持不變時,您可能會與其他一些語言混淆。 。在python中,'\ x' * always *會生成一個單獨的字符,或者是特殊的字符,或者簡單的是'x'。在這種情況下'x =''。如果你想擁有一對字符,你必須避開反斜線。 – Bakuriu

回答

1

另一個選項:使用Python的原始字符串:

>>> "'hello'".replace("'", "\'") 
>>> "'hello'" 
>>> 
>>> "'hello'".replace("'", "\\'") 
>>> "\\'hello\\'" 
>>> 
>>> "'hello'".replace("'", r"\'") # <- Note the starting r 
>>> "\\'hello\\'" 
0

我最好的猜測是反斜槓在Python中被稱爲轉義序列。 Python不會將其識別爲文字,因此您必須改爲\\。這同樣適用於單引號(\'

所以您使用的替換功能(我猜從上5日線),其中,嘗試輸入這個:

sTmp.replace("'", "\\", 1)

+0

\\''不起作用,但'\'確實有效。謝謝 – nlgootee