sql - 模式可以用于替换python中re.sub中的组吗
问题描述
目前,我正在为一项对于像我这样的 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');
我该如何解决?
提前致谢。
内什
解决方案
因此,这里的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)
投稿人: 用户pts对类似问题给出了准确的回答
谢谢和欢呼!
推荐阅读
- javascript - 在 textarea 中写入文档不起作用
- laravel - 未找到错误类“应用程序\产品”,laravel
- android-studio - Android studio 字体乱了
- docker - 我可以使用预生成的 keytab 文件分发 docker 映像吗?
- python - 如何解决检测到的循环引用
- python - 为使用 pygame 模块制作的 python 游戏文件创建可执行安装程序时出错
- javascript - 数据表中上传的行不受隐藏列的影响
- javascript - 在 PHP 和 JS 中查找字数的差异问题
- ruby-on-rails - Active Admin:如何在输入 active_admin rails 时应用搜索过滤器
- swift - 如何将 POST 值发送到 API?[迅速]