Могут ли шаблоны использоваться для замены группы в re.sub в python? - PullRequest
0 голосов
/ 25 октября 2019

В настоящее время я ломаю голову над задачей, которая кажется мне слишком сложной для начинающего в python. Я был бы очень признателен, если бы вы могли помочь мне в этом. Я пытаюсь заменить запятую на точку. Я хочу, чтобы это было сделано только для определенного элемента в скрипте SQL (значение, выделенное жирным шрифтом):

Insert into SEC_DATA (HEADER_ID,TIMESTMP,BOMLABEL,TI_TO_EX,HOLD_TI,STRIKE,STRIKE_FORM,SDVALUE,VALUE1,VALUE2) values ('Swaption-Volatilitдten','02/03/2016 00:00:00','DD/MM/YYYY HH24:MI:SS'),'BID','5400','10800','0','D','**0,595**','0','0');

Оооо, я решил использовать регулярные выражения и сделал следующее:

x = "Insert into SEC_DATA (HEADER_ID,TIMESTMP,BOMLABEL,TI_TO_EX,HOLD_TI,STRIKE,STRIKE_FORM,SDVALUE,VALUE1,VALUE2) 
values ('Swaption-Volatilitдten','02/03/2016 00:00:00','DD/MM/YYYY HH24:MI:SS'),'BID','5400','10800','0','D','0,595','0','0');"

var = re.sub(r"(\d),(\d)", r"$1.$2", x)

Я ожидаю, что $ 1 и $ 2 оставят группу без изменений, потому что я хочу только превратить запятую в точку. Числа вокруг запятой служат только для того, чтобы убедиться, что это правильная запятая.

Однако, что бы я ни делал, это всегда приводит к изменению окружающих чисел:

...('Swaption-Volatilitдten',to_date('02/03/2016 00:00:00','DD/MM/YYYY HH24:MI:SS'),'BID','5400','10800','0','D','**$1.$2**95','0','0');

Как я могу это исправить?

Заранее спасибо.

неш

1 Ответ

0 голосов
/ 26 октября 2019

Таким образом, похоже, что функция лямбда здесь сделает эту работу. Решение выглядит так:

import re
x = "Insert into SEC_DATA (HEADER_ID,TIMESTMP,BOMLABEL,TI_TO_EX,HOLD_TI,STRIKE,STRIKE_FORM,SDVALUE,VALUE1,VALUE2) values ('Swaption-Volatilitäten',to_date('02/03/2016 00:00:00','DD/MM/YYYY HH24:MI:SS'),'BID','5400','10800','0','D','0,595','0','0');"
var = re.sub(r"(\d),(\d)", lambda match: "%s.%s" % (match.group(1), match.group(2)), x)

Автор: Пользователь pts дал точный ответ на аналогичный вопрос

Спасибо и ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...