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

Должны ли вы использовать двойной scape "\\" или необработанные строки r "\"? –

+0

Возможно, вы запутались с некоторыми другими языками, когда пара символов '\ x', когда' x' является одним из «специальных символов», таких как 'n',' t' и т. Д., Дает специальный символ, а в остальном * остается неизменным * , В python '\ x' * always * выдается единственный символ, который является либо специальным, либо просто' x'. В этом случае 'x = ''. Если вы хотите иметь пару символов, вы должны избегать обратной косой черты. – Bakuriu

ответ

1

Другой опция: использование необработанных строк Python:

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

Мое лучшее предположение заключается в том, что обратная косая черта известна в Python как escape-последовательность. Python не признает это как литерал, поэтому вместо этого вы должны поставить \\. То же самое относится и к одной цитаты (\')

Итак, где вы используете ваш заменить функцию (я предполагаю, что 5-й линии от верхней части), попробуйте ввести следующее:

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

+0

\\\ 'не работает, но \\' работает. благодаря – nlgootee

Смежные вопросы