如何将一个列表中的字符串部分替换为另一个列表中的另一部分?

2024-10-01 00:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以让我根据某种条件(复制粘贴)将一个列表中的字符串的一部分替换为另一个列表中的另一部分,而不影响其他部分。我有两张单子

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)

但它似乎工作不正常,它没有复制字符串的一部分,而是复制所有字符串,从而导致不正确的结果


Tags: 字符串informat列表for格式li条件
1条回答
网友
1楼 · 发布于 2024-10-01 00:21:28

这是一种使用enumerate和简单迭代的方法

例如:

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']

for ind, v in enumerate(correct_format):
    val = wrong_format[ind].split(",") 
    val[0] = v.split(",")[0]
    wrong_format[ind] = ",".join(val)

print(wrong_format)

输出:

['BWx0520BG6,1',
 'CBZ3132Bu1,2c',
 'CKZ3134BR4,1',
 'SJD8575RZ4,1',
 'UES9151GS5,1']

相关问题 更多 >