2016-09-28 9 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 replaceは "''を" 'に置き換えません。

+2

バックスラッシュを2倍します。それ以外の場合は、引用符をエスケープします。 –

+4

ダブルスカイプ "\\ '"または生の文字列r "\'"を使用しますか? –

+0

「x」が「n」や「t」などの「特殊文字」のいずれかであるときに、文字のペア「\ x」が特殊文字を生成し、それ以外の場合は*が変更されない場合は、他の言語と混同されている可能性があります* 。 Pythonの '\ x' * always *は、特別なものか単に' x'のいずれかの一つの文字を生成します。この場合、 'x = ''となります。あなたは文字のペアをしたい場合は、バックスラッシュをエスケープする必要があります。 – Bakuriu

答えて

1

別:同じはあなたの置き換え機能を(私は上から5番目の行を推測している)を使用している単一引用符(\'

そうに適用され、これを入力してみてくださいオプション:Pythonの生の文字列を使用します。

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

バックスラッシュはPythonではエスケープシーケンスとして知られています。 Pythonはこれをリテラルとして認識しないので、代りに\\を入れなければなりません。

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

+0

\\\ 'は動作しませんが、\\は動作します。ありがとう – nlgootee

関連する問題