python - fuzzywuzzy 错误 - float 类型的对象没有 len
python - fuzzywuzzy error - object of type float has no len
我正在尝试使用 fuzzywuzzy 库通过 fuzz.ratio
函数获得 2 个数据集中字符串之间的相似度得分。
虽然我经常收到以下错误:
File "title_matching.py", line 29, in <module>
match = match_title(title, all_titles_list, 75)
File "title_matching.py", line 12, in match_title
score = fuzz.ratio(title, title2)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 38, in decorator
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 29, in decorator
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 45, in decorator
if len(args[0]) == 0 or len(args[1]) == 0:
TypeError: object of type 'float' has no len()
下面是我使用库函数的模块:
def match_title(title, list_titles, min_score=0):
# -1 score incase we don't get any matches
max_score = -1
# Returning empty name for no match as well
max_name = ""
# Iternating over all names in the other
for title2 in list_titles:
#Finding fuzzy match score
score = fuzz.ratio(title, title2)
# Checking if we are above our threshold and have a better score
if (score > min_score) & (score > max_score):
max_name = title2
max_score = score
return (max_name, max_score)
我已经通过打印检查了 title 和 list_titles 的值,它们分别是字符串和字符串列表。
我不知道为什么会发生这种情况或如何修复它,因为库文件中正在生成错误。
score = fuzz.ratio(title, title2)
title
或 title2
是浮点数而不是字符串。
from fuzzywuzzy import fuzz
print(fuzz.ratio('1', '2'))
# 0
print(fuzz.ratio(1.0, '2'))
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(fuzz.ratio(1.0, '2'))
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 38, in decorator
return func(*args, **kwargs)
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 29, in decorator
return func(*args, **kwargs)
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 45, in decorator
if len(args[0]) == 0 or len(args[1]) == 0:
TypeError: object of type 'float' has no len()
我正在尝试使用 fuzzywuzzy 库通过 fuzz.ratio
函数获得 2 个数据集中字符串之间的相似度得分。
虽然我经常收到以下错误:
File "title_matching.py", line 29, in <module>
match = match_title(title, all_titles_list, 75)
File "title_matching.py", line 12, in match_title
score = fuzz.ratio(title, title2)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 38, in decorator
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 29, in decorator
return func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/fuzzywuzzy/utils.py", line 45, in decorator
if len(args[0]) == 0 or len(args[1]) == 0:
TypeError: object of type 'float' has no len()
下面是我使用库函数的模块:
def match_title(title, list_titles, min_score=0):
# -1 score incase we don't get any matches
max_score = -1
# Returning empty name for no match as well
max_name = ""
# Iternating over all names in the other
for title2 in list_titles:
#Finding fuzzy match score
score = fuzz.ratio(title, title2)
# Checking if we are above our threshold and have a better score
if (score > min_score) & (score > max_score):
max_name = title2
max_score = score
return (max_name, max_score)
我已经通过打印检查了 title 和 list_titles 的值,它们分别是字符串和字符串列表。 我不知道为什么会发生这种情况或如何修复它,因为库文件中正在生成错误。
score = fuzz.ratio(title, title2)
title
或 title2
是浮点数而不是字符串。
from fuzzywuzzy import fuzz
print(fuzz.ratio('1', '2'))
# 0
print(fuzz.ratio(1.0, '2'))
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(fuzz.ratio(1.0, '2'))
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 38, in decorator
return func(*args, **kwargs)
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 29, in decorator
return func(*args, **kwargs)
File "C:\Python37\lib\site-packages\fuzzywuzzy\utils.py", line 45, in decorator
if len(args[0]) == 0 or len(args[1]) == 0:
TypeError: object of type 'float' has no len()