多个值的字符串比较 python

string comparison for multiple values python

我有几组数据。第一个 (A) 是具有复杂名称的设备列表。第二个是更广泛的设备类别列表 (B) - 我必须使用字符串比较将第一个列表分组。我知道这不会是完美的。

对于列表 A 中的每个实体 - 我想为列表 B 中的每个实体建立编辑距离。列表 B 中得分最高的记录将是我将分配该数据点的组.

我对 python 很生疏 - 正在尝试使用 FuzzyWuzzy 来获取两个字符串值之间的距离。但是 - 我不太清楚如何遍历每个列表来生成我需要的东西。

我以为我只是为每个数据集创建一个列表并为每个数据集编写一个非常基本的循环 - 但就像我说的那样我有点生疏而且没有任何运气。

如有任何帮助,我们将不胜感激!如果有另一个包可以让我这样做(不是 Fuzzy)- 我很乐意接受建议。

看起来 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