Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串中的多个字符替换为生成器中的一个字符_Python_Algorithm_Replace_Character_Generator - Fatal编程技术网

Python 将字符串中的多个字符替换为生成器中的一个字符

Python 将字符串中的多个字符替换为生成器中的一个字符,python,algorithm,replace,character,generator,Python,Algorithm,Replace,Character,Generator,我正在寻找一种获取字符串的方法,该字符串如下所示: (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中工作,但如果存在解决方案,则愿意研究其他语言。以下正则表达式替换应该可以工作: e

我正在寻找一种获取字符串的方法,该字符串如下所示:

(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中工作,但如果存在解决方案,则愿意研究其他语言。

以下正则表达式替换应该可以工作:

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
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)

那么问题是什么呢?你可以解析字符串,计算a和b的数量,对于每一个p^th a,将其分配给2*p,对于每一个q^th b,将其分配给(2*q-1)。下次,请给我们一些你迄今为止尝试过的代码。你真的不需要任何背景知识。我希望采用上述格式的字符串,并使用python代码简单地修改它。马丁做得很好。非常感谢,很抱歉没有发布更多的背景数据,我昨晚做得很晚。如果我们交换组号,会不会反过来?如果x.group(1)='b':b+=2 return str(b)else:a+=2 return str(a)我得到的错误名称're'未定义是一个代码错误,或者可能是因为我使用Visual Studio(2015)忘记了,我修复了关于它的问题,我忽略了导入