2016-09-28 3 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

백 슬래시를 두 번 사용하십시오. 그렇지 않으면 인용 부호 만 이스케이프합니다. –

+4

더블 스케이프 "\\ '"또는 원시 문자열 r "\'"을 사용해야합니까? –

+0

아마도 'x'가 'n', 't'등과 같은 "특수 문자"중 하나 인 문자 쌍 '\ x'가 특수 문자를 생성하고 그렇지 않으면 *는 변경되지 않은 상태에서 다른 언어와 혼동을 일으킬 수 있습니다. . 파이썬'\ x' * always *는 항상 하나의 문자를 생성합니다.이 문자는 특별한 것이거나 단순히'x'입니다. 이 경우'x = ''. 한 쌍의 문자를 원한다면 백 슬래시를 벗어나야합니다. – Bakuriu

답변

1

또 다른 : 같은 당신이 당신의 대체 기능 (나는 정상에서 5 선을 추측하고있어)를 사용하는 작은 따옴표 (\')

그래서 적용이를 입력 해보십시오 옵션 : 파이썬의 원시 문자열을 사용하여 :

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

가장 좋은 추측은 백 슬래시가 Python에서 이스케이프 시퀀스로 알려져 있다는 것입니다. 파이썬은이를 리터럴로 인식하지 않으므로 대신 \\을 입력해야합니다.

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

+0

\\\ '는 작동하지 않지만 \\'는 작동합니다. 감사 – nlgootee

관련 문제