FuzzyWuzzy выдает TypeError только в приложении фляги - PullRequest
0 голосов
/ 25 февраля 2019

Поэтому я создаю небольшой поисковый инструмент на основе фляг, развернутый на heroku, чтобы проверить, в каких рейтингах можно найти университеты. Для этого я использую fuzzywuzzy, чтобы просматривать списки списков и возвращать соответствующий рейтинг.

@app.route('/results', methods=["POST"])
def results():
    uniname = request.form["Name"]

    with open("QS-2018-ASIA-clean.csv", encoding="ISO-8859-1") as f:
        reader = csv.reader(f)
        rankdata = [r for r in reader]

    with open("THE_Ranking_Asia.csv", encoding="ISO-8859-1") as g:
        reader1 = csv.reader(g)
        rankdata1 = [r for r in reader1]

    hit = process.extractOne(str(uniname), rankdata, scorer=fuzz.token_set_ratio)
    hit1 = process.extractOne(str(uniname), rankdata1, scorer=fuzz.token_set_ratio)

return render_template('results.html', result1=str(hit[0]), result=str(hit[0][0]))

Это выдает ошибку, которая в журналах моего приложения heroku выглядит следующим образом:

 -File "/app/.heroku/python/lib/python3.6/site- packages/fuzzywuzzy/string_processing.py",
 line 19, in replace_non_letters_non_numbers_with_whitespace
 -return regex.sub(" ",a_string) 
 -TypeError: expected string or bytes-like object

Это может быть потому, что попадание process.extractOne является списком?Но проблема не возникает, когда я пытаюсь этот метод в PyCharm.Там он приятно распечатывает то, что я ищу (в данном случае с uniname = "Tokyo"):

print(hit) # (['14', 'THE UNIVERSITY OF TOKYO '], 100)
print(hit[0]) # ['14', 'THE UNIVERSITY OF TOKYO ']
print(hit[0][0]) # 14

У кого-нибудь есть идеи, почему он выдает ошибку в приложении «фляга героя», а не в PyCharm?

Основываясь на комментарии, я попытался проверить нечеткие версии локально и в героку.При этом в консоли python heroku выдается следующая ошибка:

enter image description here

Большое спасибо!

1 Ответ

0 голосов
/ 27 февраля 2019

Проблема действительно заключалась в несоответствии версий fuzzywuzzy между local и heroku (кредит @AlexHall).Вместо проверки, установки или обновления в консоли Python Heroku - которая не работала - я проверил файл Requirements.txt и обнаружил, что упомянутая версия была:

fuzzywuzzy==0.3.0

Изменил это на последнюю

fuzzywuzzy==0.17.0

и побежал

git add .
git commit -m "req update"
git push heroku master

еще раз.Работает сейчас!

...