我是flask的新手,我想创建一个网页,该网页应具有输入内容,使我们可以输入单词列表并提交,然后显示结果列表,并按频率和字母顺序排列。
这是我计算出word.py出现次数的函数:
def word_occur(List):
dict_= dict()
L_prime = []
cpt = 0
for i in range(len(List)):
word_occ = List[i]
if word_occ not in L_prime:
for word in List:
if word_occ == word:
cpt += 1
dict_[List[i]] = cpt
L_prime.append(List[i])
cpt = 0
L_sort = sorted(dict_.items(),key = lambda x :(-x[1],x[0]))
print(L_sort)
return L_sort
我的烧瓶功能test_1.py
app = Flask(__name__)
@app.route('/',methods = ["POST","GET"])
def accueil():
List = []
if request.method == "POST":
List = request.form['List']
result = word_occur(List)
return render_template("accueil.html",result = result)
if __name__ =='__main__':
app.run(debug=True)
My html page : accueil.html /
<html>
<head>
<meta charset="utf-8" />
<title>Word Occurrence</title>
</head>
<body>
<p>Enter your list of object</p>
<form method="POST">
<p><input name="List" /></p>
<p><input type="submit" value="Find occurrence" /></p>
</form>
<p>
<label name="result">The result is {{result}}</label>
</p>
</html>
对于此输入列表:
["apple","lemon","banana","apple","apple","banana","lime","apricot"]
html页面的输出为:
[('"', 16), ('a', 10), (',', 7), ('p', 7), ('e', 5), ('l', 5), ('n', 5), ('b', 2), ('i', 2), ('m', 2), ('o', 2), (' ', 1), ('[', 1), (']', 1), ('c', 1), ('r', 1), ('t', 1)]
但是我的函数word.py返回:
[('apple', 3), ('banana', 2), ('apricot', 1), ('lemon', 1), ('lime', 1)]
请有人告诉我该如何解决?我是烧瓶新手
感谢您的帮助
答案 0 :(得分:0)
尝试将您的词典转换为JSON string,尽管Flask已经为您做到了这一点我不会感到惊讶。
答案 1 :(得分:0)
当您期望字符串列表时,您的List
输入将作为字符串提交。尝试使用split()
将其转换为列表。
例如假设您的列表用逗号分隔:
List = request.form['List'].split(',')
编辑:每条注释,如果要输入列表的字符串表示形式,请尝试ast.literal_eval
将评估字符串作为Python文字运行:
List = ast.literal_eval(request.form['List'])