python - нечеткая ошибка - объект типа float не имеет длины - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь использовать библиотеку fuzzywuzzy, чтобы получить оценку сходства между строками в 2 наборах данных с помощью функции fuzz.ratio.

Хотя я постоянно получаю следующую ошибку:

 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, напечатав их, и они представляют собой строку и список строк соответственно.Я понятия не имею, почему это происходит или как это исправить, поскольку ошибка генерируется в файле библиотеки.

1 Ответ

0 голосов
/ 05 декабря 2018

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...