我和一个朋友正在使用FuzzyWuzzy进行近似字符串匹配(想象一下,哈哈)来查找我们从JSON(具体来说是Steam API JSON)生成的数组中的给定输入。

这是我们用来从JSON生成数组的代码,其中path是保存在磁盘上的JSON的路径,而array_location只是这样,我们仅提取游戏ID和游戏名称。

def array_from_json_file(path, array_location):
    array = {}
    with open(path, encoding='utf-8') as f:
        array = json.load(f)
    array = enumerate_json(array, array_location)
    return array

这是遍历整个列表进行模糊匹配的代码,其中query是用户输入, data是我们从JSON生成的数组,而str_location是,因此它仅搜索名称而不是ID

def fuzzy_query(query, data, str_location):
    results = []
    for i in range(0, len(data)):
        target = enumerate_json(data[i], str_location)
        if (len(target) > 1):
            strength = fuzz.partial_ratio(query.lower(), target.lower()) # This is where the issue is
            results.append((strength, data[i]))
    return results

最后,运行脚本时得到的Traceback

Traceback (most recent call last):
  File "main.py", line 81, in <module>
    main()
  File "main.py", line 73, in main
    query_results = fuzzy_query(query, games, ["name"])
  File "main.py", line 45, in fuzzy_query
    strength = fuzz.partial_ratio(query.lower(), target.lower())
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\fuzzywuzzy\utils.py", line 38, in decorator
    return func(*args, **kwargs)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\fuzzywuzzy\utils.py", line 29, in decorator
    return func(*args, **kwargs)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\fuzzywuzzy\utils.py", line 47, in decorator
    return func(*args, **kwargs)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\fuzzywuzzy\fuzz.py", line 47, in partial_ratio
    blocks = m.get_matching_blocks()
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\fuzzywuzzy\StringMatcher.py", line 59, in get_matching_blocks
    self._str1, self._str2)
ValueError: apply_edit edit operations are invalid or inapplicable

我的朋友和我在Python版本(v3.6.6)和FuzzyWuzzy版本(v0.17.0)中都具有相同的版本。 当我运行Windows 10 LTSB时,他正在使用Ubuntu。 他在运行我们的脚本时没有任何问题。 据我们所知,没有环境差异会导致此问题。

  ask by Lv_InSaNe_vL translate from so

本文未有回复,本站智能推荐:

1回复

python-模糊匹配,遍历数据集以在参考集中找到相应的项目

我正在尝试学习和实现python中的模糊匹配。 我有两个数据集,它们作为数据帧加载到熊猫中。 集合1是参考集。 第二集是包含与参考名称匹配的数据的集合。 我遍历set_1项以在引用中搜索相应的条目,但出现错误。 我需要一些有关错误的帮助。 我是否试图以一种好的方式来构造算法?
1回复

使用fuzz.ratio时发生TypeError

我使用以下简单代码来计算两个列表的值的fuzz.ratio()值,并得到错误:TypeError:类型为'float'的对象没有len()。 (在行上:if(fuzz.ratio(i,j)> = 85):)代码如下:
1回复

基本问题 - 使用函数遍历 Pandas 数据框列

我正在努力学习基础知识。 我在pandas数据框中只有一列名称,我想使用fuzzywuzzy库中的3-4个函数来比较字符串的潜在重复项。 所以我想检查列内容的其余部分的名字,然后是第二名,依此类推。 列将有数百个甚至数千个名称。 我想创建一个包含名称组合的 df,其中至少一个值大于 80。 我需要
2回复

FuzzyWuzzy - 遍历列表,匹配接受的值,并返回一个数据帧

客观的 给定一个 excel 文件(充满拼写错误),使用 FuzzyWuzzy 将拼写错误与accepted列表进行比较和匹配。 使用最接近的、 accepted匹配更正填错字的 excel 文件。 方法 使用 Pandas 导入 Excel 文件 将原始的、拼写错误的 excel
2回复

python3fuzzywuzzy不返回数组的索引值

我正在尝试修改fuzzywuzzy库。 模块进程返回score和数组元素。 但我希望它返回元素的索引以及分数、项目、索引组。 这是我尝试过的: 当我尝试实现它时,结果是它之前由fuzzywuzzy展示的。 但我期待它返回的是: 请让我知道建议。
2回复

运行fuzzywuzzy时如何摆脱属性错误?

我正在尝试比较 2 个列表并获得列表中每个项目的距离比。 我下面的代码返回了一个属性错误:“系列”对象没有“模糊”属性。 我该如何解决? 'differences' 是我早期代码的结果,用于列出具有实际比较(完全匹配)的公司列表,而 df['Company'] 是我试图与之比较的数据框中的一列。
1回复

如何将使用 Fuzz 与数组输入匹配

我想尝试从我输入的两个数组中获取匹配值。 为此我使用 Fuzzy。 但我仍然无法获得该值,可能是因为输入表单是一个数组。 请帮帮我:) 谢谢,如果我的问题不清楚,我很抱歉。 谢谢:) 我尝试了以下代码: 预期结果: 有人可以帮忙吗?
1回复

Fuzzywuzzy python 是如何工作的——当句子之间没有匹配的词时?

我正在使用模糊模糊匹配来查找句子之间的相似性。 当我比较这两句话时——“用户尝试登录”和“接受标准” fuzz.token_set_ratio('用户尝试登录', '接受标准') 它给了我 42 分。 有人可以帮我理解当没有匹配的单词时我们是如何得到 42 分的吗??
1回复

在IPython Notebook中安装FuzzyWuzzy时出错

我真的不知道如何使用代码安装库。 我尝试使用模块pip在IPython Notebook中安装Fuzzywuzzy,但出现错误消息: 那么,如何使用代码正确安装Fuzzywuzzy和其他软件包?
2回复

在 Python 中进行字符串匹配时,有没有办法提高匹配性能?

我有一个非常大的字典,里面存储了大量的英语句子和它们的西班牙语翻译。 当给定一个随机的英文句子时,我打算使用 Python 的 Fuzzywuzzy 库在字典中找到最接近的匹配项。 我的代码: 在现实生活中, sentencePairs字典会非常大,至少存储了 100 万个项目。 所以即使安装了