如何在python中使用regex.sub替换符号

2024-09-30 07:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串s,其中:

s = 'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue='

我想用DEF代替ABC

<<<ABC\w+=\[0]>>> 

则输出应为

<<<DEF\w+=\[0]>>>

在文本中\w+表示RMGrade,但它会随机更改

所需输出为:

S = id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue=

我试过:

 s = re.sub('<<<ABC\w+=\[0]>>>','<<<DEF\w+=\[0]>>>',s)

我被输出为

 'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<DEF\\w+=\\[0]>>>BasicData:id=ABCvalue='

Tags: 字符串文本reidvaluedefabcbasicdata
1条回答
网友
1楼 · 发布于 2024-09-30 07:26:48

我有点搞不懂你到底想达到什么目的。但是如果您想在模式<<<ABC\w+=\[0]>>>的每个匹配中替换ABC,那么您可以使用对组的反向引用

例如,修改模式以便可以引用组(<<<)ABC(\w+=\[0]>>>)。现在组#1指的是ABC之前的部分,组#2指的是ABC之后的部分。所以替换字符串看起来像这样-\1DEF\2,其中\1是组#1,\2是组#2

import re

s = 'id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<ABCRMGrade=[0]>>>BasicData:id=ABCvalue='

res = re.sub(r'(<<<)ABC(\w+=\[0]>>>)', r'\1DEF\2', s)
print(res)

输出:id=,value=<<<,RMOrigin=[0]>>>BasicData:id=ABCvalue=<<<DEFRMGrade=[0]>>>BasicData:id=ABCvalue=

您还可以使用函数来定义替换。有关更多信息,请查看documentation

相关问题 更多 >

    热门问题