python实现批量替换字符串中的数字

如字符串:“a2aa2bbb3ccc4dddd”,现在希望将串里的2,2,3,4替换成11,22,33,44

那么需要传入两个参数;
第一个参数是目标字符串——“a2aa2bbb3ccc4dddd”;
第二个参数是替换后的值——[11,22,33,44]
完整代码如下:

import re


def updatePath(path='', nowpath=[]):
    kv = []
    nums = []
    beforeDatas = re.findall('\d', path)
    for num in beforeDatas:
        indexV = []
        times = path.count(num)
        if (times > 1):
            if (num not in nums):
                indexs = re.finditer(num, path)
                for index in indexs:
                    iV = []
                    i = index.span()[0]
                    iV.append(num)
                    iV.append(i)
                    kv.append(iV)
            nums.append(num)
        else:
            index = path.find(num)
            indexV.append(num)
            indexV.append(index)
            kv.append(indexV)
    # 根据数字位置排序
    indexSort = []
    resultIndex = []
    for vi in kv:
        indexSort.append(vi[1])
    indexSort.sort()
    for i in indexSort:
        for v in kv:
            if (i == v[1]):
                resultIndex.append(v)
    temp = []
    for i in range(len(nowpath)):
        if (i == 0):
            index0 = int(resultIndex[0][1])
            p = path[:index0]
            temp.append(p)
        elif (i == len(nowpath) - 1):
            indexstart = int(resultIndex[i - 1][1]) + len(resultIndex[i - 1][0])
            indexend = int(resultIndex[i][1])
            p = path[indexstart:indexend]
            temp.append(p)
            indexlast = int(resultIndex[i][1])
            p = path[indexlast + len(resultIndex[i][0]):]
            temp.append(p)

        else:
            indexstart = int(resultIndex[i - 1][1]) + len(resultIndex[i - 1][0])
            indexend = int(resultIndex[i][1])
            p = path[indexstart:indexend]
            temp.append(p)
    for i in range(len(nowpath)):
        temp[i + 1] = str(nowpath[i]) + temp[i + 1]
    result = ''.join(temp)
    return result



if __name__ == '__main__':
    s=updatePath('aaa2bbb3ccc4dddd',[222,333,444])
    print(s)

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈希哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值