因此,我正在构建一个基于烧瓶的小型搜索工具,该工具部署在heroku上,以检查可以在哪些大学中找到排名。为此,我正在使用Fuzzywuzzy遍历列表并返回相关排名。
addClass()
这会引发错误,在我的heroku应用程序日志中看起来像这样:
@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]))
这可能是因为process.extractOne命中是一个列表吗?但是当我在PyCharm中尝试此方法时,不会发生此问题。在那里,他很好地打印了我要寻找的内容(在这种情况下,其名称为uni东京=“东京”):
-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
任何人都知道为什么他在heroku flask应用程序中抛出错误而不在PyCharm中抛出错误吗?
基于评论,我尝试在本地和heroku中检查Fuzzywuzzy版本。在heroku的python控制台中执行此操作会引发以下错误:
非常感谢!
答案 0 :(得分:0)
问题的确是本地和heroku之间的Fuzzywuzzy版本差异(贷记为@AlexHall)。 而不是在Heroku的python控制台中检查,安装或升级-该方法不起作用-我检查了Requirements.txt文件,发现其中提到的版本是:
fuzzywuzzy==0.3.0
将其更改为最新版本
fuzzywuzzy==0.17.0
然后跑
git add .
git commit -m "req update"
git push heroku master
再一次。现在工作!