FuzzyWuzzy仅在烧瓶应用程序中引发TypeError

时间:2019-02-25 20:05:38

标签: python heroku flask typeerror fuzzywuzzy

因此,我正在构建一个基于烧瓶的小型搜索工具,该工具部署在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控制台中执行此操作会引发以下错误:

enter image description here

非常感谢!

1 个答案:

答案 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

再一次。现在工作!