【发布时间】:2017-06-23 19:32:09
【问题描述】:
我有一个“id”列表:
ids = [None, '20160928a', '20160929a', ... ]
我发现的另一个“ids”列表是使用fuzzywuzzy的重复ids:
repeat_offenders = ['20160928a', '20161115a', '20161121a', ... ]
我想再次使用fuzzywuzzy 创建一个列表列表,其中包含重复ID 在列表“ID”中的位置(按索引)。所以输出看起来像这样(因为它们是重复的,所以列表中的每个列表都至少包含两个元素:
collected_ids = [[0,5,700], [6,3], [4,826,12]]
我的尝试,目前只返回id而不是id的位置:
collected_urls = []
for offender in repeat_offenders[:10]:
best_match = process.extract(offender, ids)
collection = []
for match in best_match:
if match[1] > 95:
collection.append(match[0])
else:
pass
collected_urls.append(collection)
更新,我尝试使用 Moe 的答案来查找/分组完全匹配:
idz = ids
collected_ids = []
for i in range(len(idz)):
tmp = [i]
for j in range(len(ids)):
if idz[i] == idz[j] and i != j:
tmp.append(j)
del j
if len(tmp) > 1:
collected_ids.append(tmp)
del i
【问题讨论】:
-
您使用
fuzzywuzzy查找重复项的任何原因,如果字符串匹配,您不能简单地测试是否相等? -
因为我想对相似的 id 进行分组,因为“重复”可能不完全(100%)相同,这就是我使用 95 阈值的原因......但是相当多的重复正是相同-因此使用相等可能是最简单(并且足够好)的选择..您介意告诉我如何根据相等来要求我吗?谢谢!
标签: python regex list fuzzywuzzy