Pandas 使用 flask 为搜索数组获取 Nonetype

Pandas with flask getting Nonetype for search array

我收到此错误:

AttributeError: 'NoneType' object has no attribute 'replace'

我认为这是因为页面加载时搜索数组为空,但事先添加 'is not None' 检查并不能解决问题。

search = []     
if search is not None:
    search = request.values.get('searchinput').replace(" ","").split(',')    
    return render_template('drugsafety.html', tables=[filtered.to_html(classes='data')], titles=['na', 'Drug List'])

为什么这不会逃避 NoneType 错误?

编辑

根据以下回答更新

searchterms = []

    search = request.values.get('searchinput')
    if search is not None:
        searchterms = search.replace(" ","").split(',') 
    else:
        searchterms == ""

    filtered = df.query ('BP.str.contains(@searchterms, na=False)', engine='python')    
    return render_template('drugsafety.html', tables=[filtered.to_html(classes='data')], titles=['na', 'Drug List'])

这现在给

TypeError: unhashable type: 'list'

您将 search 设置为空列表。这使得它不是 None。所以它进入 if 下面的代码 你写

search = request.values.get('searchinput').replace(" ","").split(',')

这个returns searchinput值是有的。如果没有这样的值它returns None。所以你的值没有 searchinput.

您没有指定如何发送请求,使用POSTGET 方法。如果是 post,你的表单应该有一个 ID 为 searchinput 的文本输入,如果是 get,同样适用,或者你可以有一个名为 searchinput[ 的 url 参数=22=]

解决方法: First 获取搜索输入的值,second 如果不是 None,替换逗号并拆分。

顺便说一句,对于字符串,首选这样的检查:

if search: # True if search is not none and not the empty string