You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS Lambda中使用Python re.sub移除行尾括号的问题

解决Python正则替换行尾')'无效的问题

我在将Hive DDL转换为Redshift DDL时,想用Python的re.sub替换行尾的),但尝试了几种写法都没效果。

输入示例

"ci_stage" : "varchar(30))
"target_manager_id" : "bigint)

期望输出

"ci_stage" : "varchar(30)"
"target_manager_id" : "bigint"

我试过的代码

modified_line113 = re.sub('[)]$','"', modified_line112)
modified_line113 = re.sub(r"\)$", '"', modified_line112)

解决方案

问题核心是行尾大概率藏着看不见的换行符或空白字符,正则里的$默认匹配换行符前的位置,但如果)后面还有空白/换行,)$就匹配不到目标字符。

最简解决方法有两种:

  • 正则写法(推荐):匹配行尾的),同时忽略后面的任意空白字符:
modified_line113 = re.sub(r"\)\s*$", '"', modified_line112)

\s*会匹配0个或多个空白字符(空格、制表符、换行符都算),确保能精准定位到行尾的)。

  • 字符串原生方法:如果不想用正则,也可以直接用字符串处理:
# 先去掉行尾所有空白,再判断最后一个字符是否是')'
stripped_line = modified_line112.rstrip()
modified_line113 = stripped_line[:-1] + '"' if stripped_line.endswith(')') else stripped_line

内容的提问来源于stack exchange,提问作者akki_hs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:20:35