我正在尝试使用python代码在以下代码段中将字符值“ K”替换为“ M”,但运气不佳。
代码:
import re
original_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-Sxxxx
K
MK
Process finished with exit code 0
我想要的期望输出:
context PQ-4662-33-M64C-C-DDxxx-Sxxxx
答案 0 :(得分:1)
替换为必需的组
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'
如果您只是想将所有`K替换为M
re.sub('K','M',original_text)
答案 1 :(得分:0)
如果您要做的只是将K
替换为M
,则只需执行以下任一操作即可:
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