如字符串:“a2aa2bbb3ccc4dddd”,现在希望将串里的2,2,3,4替换成11,22,33,44
那么需要传入两个参数;
第一个参数是目标字符串——“a2aa2bbb3ccc4dddd”;
第二个参数是替换后的值——[11,22,33,44]
完整代码如下:
import redef 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 resultif __name__ == '__main__':s=updatePath('aaa2bbb3ccc4dddd',[222,333,444])print(s)
运行结果:
