我正在寻找一种方法来获取如下所示的字符串:
(a,1),(b,1),(a,1),(b,5),(a,1),(b,2),(a,1),(b,1),(a,2),(b,6),(a,2)
将第一个“a”替换为偶数,第二个替换为下一个 偶数,等等,无论字符串多长。然后我想取第一个“b”并给它分配一个奇数,然后下一个“b”得到 下一个最高的奇数,依此类推,无论字符串多长。我 主要在Python 2.7中工作,但如果存在解决方案,则愿意研究其他语言。
答案 0 :(得分:0)
even = 2
while "a" in string:
string = string.replace("a", str(even), 1)
even += 2
odd = 1
while "b" in string:
string = string.replace("b", str(odd), 1)
odd += 2
答案 1 :(得分:0)
以下正则表达式替换应该起作用:
import re
def odd_even(x):
global a,b
if x.group(1) == 'a':
a += 2
return str(a)
else:
b += 2
return str(b)
a = 0
b = -1
source = "(a,1),(b,1),(a,1),(b,5),(a,1),(b,2),(a,1),(b,1),(a,2),(b,6),(a,2)"
print re.sub("([ab])", odd_even, source)
打印:
(2,1),(1,1),(4,1),(3,5),(6,1),(5,2),(8,1),(7,1),(10,2),(9,6),(12,2)