使用Python在列表中查找相似元素

时间:2020-08-10 09:06:35

标签: python list difflib sequencematcher

我需要使用python在列表中查找类似的商品。 (例如,“限制”类似于“限制”,或者“下载ICD文件”类似于“下载ICD zip文件”) 我真的希望我的结果与char相似,而不与数字相似(例如,“ Angle 1”类似于“ Angle 2”)。我列表中的所有这些字符串都以'\ 0'

结尾

我想做的是将每个项目都分隔为空白,看看是否有任何部分由数字组成。 但是不知何故它无法正常工作。

这是我的代码示例:

for k in range(len(split)):  # split already consists of splitted list entry
    replace = split[k].replace(
        "\\0", ""
    )  # replace \0 at every line ending to guarantee it is only a digit
    is_num = lambda q: q.replace(
        ".", "", 1
    ).isdigit()  # lambda i found somewhere on the internet
    check = is_num(replace)
    if check == True:  # break if it is a digit and split next entry of list
        break
    elif check == False:  # i know, else would be fine too
        seq = difflib.SequenceMatcher(a=List[i].lower(), b=List[j].lower())
        if seq.ratio() > 0.9:
            print(Element1, "is similar to", Element2, "\t")
            break

1 个答案:

答案 0 :(得分:0)

尝试使用difflib中的get_close_matches而不是sequencematcher

from difflib import get_close_matches
a = ["abc/0", "efg/0", "bc/0"]
b=[]
for i in a:
    x = i.rstrip("/0")
    b.append(x)

for i in range(len(b)):
        print(get_close_matches(b[i], (b)))