Поэтому я создаю небольшой поисковый инструмент на основе фляг, развернутый на 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 выдается следующая ошибка:
Большое спасибо!