python中是否有类似trim()的函数?
我使用Flask miniframework并且它不接受:
selected_student = (request.args.get('student_form')).strip()
错误:AttributeError: 'NoneType' object has no attribute 'strip'
selected_student.replace(" ", "")
错误:AttributeError: 'NoneType' object has no attribute 'replace'
我需要一个类似trim()的函数,而不需要编写类/子类或javascript
答案 0 :(得分:1)
您看到的错误是因为无数据从表单传递到Flask服务器。您对request
的使用返回None
值类型而不是str
。
您为表单发布了以下HTML标记:
<form action="/student" method='POST'>
<select name="student_form ">
{% for student in students_list %}
<option value="{{student}}">{{student}}</option>
{% endfor %}
</select>
<input type='submit' value='submit' />
</form>
因此,你需要Flask的某个地方在服务器端获取这些数据,例如:
@app.route('/student', methods=['POST'])
def receive_student_form_data:
my_selection = str(request.form.get('student_form')).strip()
print(my_selection)
只是为了澄清我为什么以这种方式创建我的方法:我注意到你正在使用request.args.get()
来检索表单发送的值。这是不正确的。
request.args
用于从URL中检索键/值对
request.form
用于从HTML表单中检索键/值对。
所以我建议你改用request.form.get('student_form')
。如果您确实希望确定它在Flask服务器检索时被转换为str
,那么您可以将其转换为str
,如下所示:
str(request.form.get('student_form'))
然后,正如少数人已经建议的那样,您可以使用.strip()
方法删除任何尾随空格。
答案 1 :(得分:0)
有一个 strip()方法。您得到的错误是因为您尝试在 NoneType 对象上运行它。您需要在字符串对象上运行它。
>>> s = 'some string '
>>> s.strip()
'some string'
还有字符串替换:
>>> s.replace('some', 'many')
'many string '
您遇到的问题与其他问题有关。您以None对象结束,而不是您想要获得的对象。