为了账号安全,请及时绑定邮箱和手机立即绑定

python替换捕获组值

python替换捕获组值

慕运维8079593 2021-07-09 18:41:37
我正在尝试使用 python 代码将以下代码片段中的字符值 'K' 替换为 'M',但运气不佳。代码:import reoriginal_text = 'context PQ-4662-33-K64C-C-DDxxx-Sxxxx'regex = re.compile(r'context\s.*\d[0-9]\-\w\w\-(K).*')result = re.match(regex, original_text)replace_attempt = regex.sub(r'M\1', original_text)print(result.group(0))print(result.group(1))print(replace_attempt)输出:context PQ-4662-33-K64C-C-DDxxx-SxxxxKMKProcess finished with exit code 0我正在寻求的期望输出:context PQ-4662-33-M64C-C-DDxxx-Sxxxx
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

替换为所需的组


original_text = 'context PQ-4662-33-K64C-C-DDxxx-Sxxxx'

original_text=re.sub(r'(context\s.*\d[0-9]\-\w\w\-)(K)(.*)',r'\1'+'M'+r'\3',original_text)

print(original_text) #'context PQ-4662-33-M64C-C-DDxxx-Sxxxx'

如果你只是想用 M 替换所有的 `K


re.sub('K','M',original_text)


查看完整回答
反对 回复 2021-07-13
?
慕森卡

TA贡献1806条经验 获得超8个赞

如果您只想替换KM,那么您可以简单地执行以下任一操作:

1) re.sub('K', 'M', original_text)

2) original_text.replace('K', 'M')

两者都会产生:

context PQ-4662-33-M64C-C-DDxxx-Sxxxx

如果您的要求更具体,并且输入字符串始终遵循规定的模式:

re.sub(r'(?<=context [A-Z]{2}-\d{4}-\d{2}-)[A-Z]', 'M', original_text)

再次产生:

context PQ-4662-33-M64C-C-DDxxx-Sxxxx


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信