如何将列表中的每个元素与另一个列表中的每个元素进行比较?

2024-09-30 12:23:41 发布

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

我想把提取的促销代码列表与正确的促销代码列表进行比较。在

如果提取的促销代码列表中的促销代码与正确的促销代码列表中的促销代码进行比较,则表示促销代码有错误。为了从正确的促销代码列表中找到正确的促销代码,我需要找到编辑距离(levenshtein distance)最小的促销代码(从提取的促销代码列表中)。在

代码截止现在:-

import csv

with open("all_correct_promo.csv","rb") as file1:
    reader1 = csv.reader(file1)
    correctPromoList = list(reader1)
    #print correctPromoList

with open("all_extracted_promo.csv","rb") as file2:
    reader2 = csv.reader(file2)
    extractedPromoList = list(reader2)
    #print extractedPromoList

incorrectPromo = []
count = 0
for extracted in extractedPromoList:
    if(extracted not in correctPromoList):
        incorrectPromo.append(extracted)
    else:
        count = count + 1
#print incorrectPromo

for promos in incorrectPromo:
    print promos

Tags: csv代码in列表countwithopenall
1条回答
网友
1楼 · 发布于 2024-09-30 12:23:41

根据nltk docs

nltk.metrics.distance.edit_distance(s1, s2, transpositions=False)

计算两个字符串之间的Levenshtein编辑距离。编辑距离是将s1转换为s2需要替换、插入或删除的字符数。例如,将“rain”转换为“shine”需要三个步骤,包括两个替换和一个插入:“rain”->;“sain”->;“shin”->;“shin”。这些操作本可以按其他顺序进行,但至少需要三个步骤。在

说到您的代码,我认为下半部分的一些更改将捕获编辑距离-

^{pr2}$

输出

Computing 0th promo code...
Computing 1th promo code...
Computing 2th promo code...
{'abc': 'abc', 'abd': 'abx,aba,abz,abc', 'acd': 'abx,aba,abz,abc'}

相关问题 更多 >

    热门问题