Python多个值的字符串比较

5
我有一组数据。第一组(A)是设备名称较为复杂的列表。第二组是设备类别(B)的更广泛的列表,我需要使用字符串比较将第一组列表分组到第二组中。我知道这不会完美无缺。
针对列表A中的每个实体,我想要确定列表B中每个实体的Levenshtein距离。得分最高的列表B记录将是我将该数据点分配给的组别。
我非常生疏Python,并且正在尝试使用FuzzyWuzzy获取两个字符串值之间的距离。然而,我无法弄清如何迭代每个列表以生成所需的内容。
我假定我只需为每个数据集创建一个列表,并为每个列表编写一个相当基本的循环,但像我说的那样,我有些荒废并没有找到任何运气。
非常感谢您的帮助!如果有另一个软件包允许我执行此操作(不是Fuzzy)-我很乐意听取建议。

看这个,它会很有帮助的。Ned Batchelder - 像本地人一样循环:while、for、迭代器、生成器 https://www.youtube.com/watch?v=EnSu9hHGq5o - diek
1个回答

5

看起来你需要使用process.extractOne函数。一个简单的用例可能是这样的:

from fuzzywuzzy import process
from collections import defaultdict

complicated_names = ['leather couch', 'left-handed screwdriver', 'tomato peeler']
generic_names = ['couch', 'screwdriver', 'peeler']

group = defaultdict(list)   

for name in complicated_names:
    group[process.extractOne(name, generic_names)[0]].append(name)

defaultdict 是一个具有所有键的默认值的字典。

我们遍历所有复杂的名称,使用fuzzywuzzy找到最匹配的名称,然后将该名称添加到与匹配项关联的list中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接