【问题标题】:Can patterns be used for replacement of a group in re.sub in python模式可以用于替换python中re.sub中的组吗
【发布时间】:2019-10-25 09:56:38
【问题描述】:

目前,我正在为一项对于像我这样的 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');

Sooo,我决定使用正则表达式并做了以下事情:

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');

我该如何解决这个问题?

提前致谢。

尼什

【问题讨论】:

标签: sql regex python-3.x


【解决方案1】:

因此,这里的 lambda 函数似乎可以完成这项工作。解决方案如下所示:

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)

贡献者: User pts gave an accurate answer to a similar question

感谢和欢呼!

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多