有没有一种方法可以让我根据某种条件(复制粘贴)将一个列表中的字符串的一部分替换为另一个列表中的另一部分,而不影响其他部分。我有两张单子
correct_format = ['BWx0520BG6,2x','CBZ3132Bu1,3','CKZ3134BR4,2','SJD8575RZ4,2','UES9151GS5,2']
wrong_format = ['BWL0520BG6,1','CBZ3132BR1,2c','CKZ313\\BR4,1','SJD8|75RZ4,1','UES915*GS5,1']
我想比较正确的格式和错误的格式列表,基于一个条件,如果错误格式的真部分将被正确格式值的一部分替换,那么'BWL0520BG6,1'
应该变成'BWx0520BG6,1'
,只有BWL0520BG6
应该被更改。应该排除'BWL0520BG6,1'
中的1
'CBZ3132BR1,2c'
应该变成'CBZ3132Bu1,2c'
只有CBZ3132BR1
应该改变。应该排除'CBZ3132BR1,2c'
中的2c
。这应该适用于其他人
这就是我到目前为止所做的
corrected = []
correct_format = ['BWx0520BG6,2x','CBZ3132Bu1,3','CKZ3134BR4,2','SJD8575RZ4,2','UES9151GS5,2']
wrong_format = ['BWL0520BG6,1','CBZ3132BR1,2c','CKZ313\\BR4,1','SJD8|75RZ4,1','UES915*GS5,1']
def hamming_distance(s1, s2):
return sum(c1 != c2 for c1, c2 in zip(s1, s2))
for r in correct_format:
for i in wrong_format:
li_r = r.split(',')
li_i = i.split(',')
if hamming_distance(li_r[0], li_i[0]) == 1:
corrected.append(r)
wrong_format.remove(i)
但它似乎工作不正常,它没有复制字符串的一部分,而是复制所有字符串,从而导致不正确的结果
这是一种使用
enumerate
和简单迭代的方法例如:
输出:
相关问题 更多 >
编程相关推荐