如字符串:“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)
运行结果: