【问题标题】:string comparison for multiple values python多个值python的字符串比较
【发布时间】:2017-10-05 01:37:15
【问题描述】:

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

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

我在 python 中非常生疏 - 我正在玩 FuzzyWuzzy 来获取两个字符串值之间的距离。但是 - 我不太清楚如何遍历每个列表来产生我需要的东西。

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

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

【问题讨论】:

标签: python levenshtein-distance fuzzywuzzy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多