我想执行字符串的条件替换。如果我的
string = "abaabaaabaaaabaaabaaaaaabaababaaabaaaabaaaaaabaaaaabaaabaabaababaaabaaaabaaaabaabaaab"
并且我想用2个不同的字符替换a,所以我想将单个“a”更改为“c”(a = c),双“aa”将更改为“d”“aa = d”,替换标准是如果“a”为奇数,则首先用单个“a”替换为“c”,然后每两个“a”替换为“d”,例如“ab = cb”,“aab = db”,“aaab = cdb” “(第一个 a = c,接下来 2 个 aa 和 d)aaaab = ddb。 更换后我的字符串将是
"cbdbcdbddbcdbdddbdbcbcdbddbdddbcddbcdbdbdbcbcdbddbddbdbcdb"
有人可以指导我如何编写可以使用“if else”或正则表达式的代码
您可以使用 string.replace() 巧妙地完成此操作。
因此,代码为:
my_string = my_string[::-1].replace('aa', 'd')[::-1].replace('a', 'c')
。
这是一个基于正则表达式的解决方案,可以避免两次反转:
import re
string = "abaabaaabaaaabaaabaaaaaabaababaaabaaaabaaaaaabaaaaabaaabaabaababaaabaaaabaaaabaabaaab"
print (re.sub(r'(?<!a)a(?=(?:aa)*(?!a))', 'c', string).replace('aa', 'd'))
输出:
cbdbcdbddbcdbdddbdbcbcdbddbdddbcddbcdbdbdbcbcdbddbddbdbcdb
正则表达式详细信息:
(?<!a)
:断言前一个字符不是 a
a
:匹配单个a
(?=(?:aa)*(?!a))
:断言前面有 0 个或多个双 a
字符,且后面没有另一个 a