【问题标题】:How to match use Fuzz with array input如何匹配使用 Fuzz 与数组输入
【发布时间】:2021-01-22 05:44:00
【问题描述】:

我想尝试从我输入的两个数组中获取匹配值。我为此使用 Fuzzy。但我仍然无法获得该值,可能是因为输入表单是一个数组。请帮帮我:)

谢谢,如果我的问题不清楚,我很抱歉。谢谢你:)

a = [
      [
        "nyeri",
        "tekan"
      ],
      [
        "nyeri",
        "pada",
        "kulit"
      ],
      [
        "demam"
      ]
   ]

b = [
      [
        "nyeri",
        "tekan"
      ],
      [
        "pembengkakan",
        "pada",
        "kulit"
      ],
      [
        "demam",
        "tinggi"
      ]
   ]

我尝试了以下代码:

c = []
for i in range(0, len(a)):
    for j in range(0, len(b):   
    
        Matching = fuzz.ratio(a,b)
        
        if len(a) == len(b) and Matching == 100:
            c.append([a, 'value:', 1])  
        elif len(a) != len(b) and 90 <= Matching <= 99:
            c.append([a, 'value:', 0.8])
        elif len(a) != len(b) and 80 <= Matching <= 89:
            c.append([a, 'value:', 0.7])
        elif len(a) != len(b) and 70 <= Matching <= 79:
            c.append([a, 'value:', 0.6])
        elif len(a) != len(b) and 0 <= Matching <= 69:
            c.append([a, 'value:', 0])
        return jsonify(c)

预期结果:

[
      [
        "nyeri",
        "tekan"
      ], 
      "value:", 1
      [
        "nyeri",
        "pada",
        "kulit"
      ],
      "value:", 0
      [
        "demam"
      ],
      "value:", 0
]
     

有人可以帮忙吗?

【问题讨论】:

  • 有没有例子说明value 应该取一个不等于 1 或 0 的值?
  • @TedBrownlow,像这样,值 = 72 或 0.6,a = [ [ "thank", "you", "very", "much", "for", "your", "answer", ] ] b = [ [ "thank", "you", "very", "much", ] ]

标签: python fuzzywuzzy


【解决方案1】:

您正在获取整个 a 对象的模糊率。 ij 完全未使用。我认为这更接近您实际尝试的内容。

c = jsonify([
  fuzz.ratio(a_element,b_element)
  for a_element in a
  for b_element in b
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2016-07-28
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多