【发布时间】:2019-04-10 21:32:20
【问题描述】:
我无法运行以下函数:
match, match_score = process.extractOne(score, pct_dict.keys())
我收到一个似乎无法解决的空白错误。知道是什么原因造成的吗?
它应该做什么:如果分数是 15,它应该返回 0.026
错误:
错误:输出 = self.func(*resolved_args, **resolved_kwargs) wnas1
|文件“/code/cleveland/templatetags/percentiles_ratings.py”,行 32,在 get_percentile_standard wnas1 |匹配,match_score = process.extractOne(score, pct_dict.keys()) wnas1 |文件 “/usr/local/lib/python3.7/site-packages/fuzzywuzzy/process.py”,行 220,在 extractOne wnas1 |返回最大值(最佳列表,键= lambda i: i[1]) wnas1 |文件 “/usr/local/lib/python3.7/site-packages/fuzzywuzzy/process.py”,行 78、在extractWithoutOrder wnas1 |处理查询 = 处理器(查询) wnas1 |文件 “/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py”,第 95 行, 在full_process wnas1 |字符串输出 = StringProcessor.replace_non_letters_non_numbers_with_whitespace(s) wnas1 |文件 "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/string_processing.py", 第 26 行,在 replace_non_letters_non_numbers_with_whitespace wnas1
| return cls.regex.sub(" ", a_string)
代码:
from __future__ import unicode_literals
from django import template
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
register = template.Library()
@register.simple_tag
def get_perc(score):
MATCH_THRESHOLD = 80
pct_dict = {14: 0.016, 14.7: 0.021, 15.3: 0.026, 16: 0.034, 16.7: 0.04, 17.3: 0.05, 18: 0.07, 18.7: 0.09,
19.3: 0.11, 20: 0.13, 20.7: 0.17, 21.3: 0.21, 22: 0.26, 22.7: 0.31, 23.3: 0.38, 24: 0.47}
if not score:
return '--'
elif score < 26.7:
return '<1'
match, match_score = process.extractOne(score, pct_dict.keys())
if match_score >= MATCH_THRESHOLD:
return pct_dict[match]
else:
return '--'
【问题讨论】:
标签: django python-3.x fuzzy-logic fuzzywuzzy