首页 > 解决方案 > 带有烧瓶的熊猫为搜索数组获取 Nonetype

问题描述

我收到此错误:

AttributeError:“NoneType”对象没有“替换”属性

我认为这是因为页面加载时搜索数组为空,但事先添加“不是无”检查并不能解决它。

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'])

这现在给出

类型错误:不可散列类型:“列表”

标签: pandasflasknonetype

解决方案


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

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

这返回的searchinput值是有一个。如果没有这样的值,则返回None。所以你的价值观没有searchinput

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

解决方法: 首先获取搜索输入的值,其次如果不是None,则替换逗号并拆分。

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

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

推荐阅读