我需要使用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
答案 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)))