html页面中的输出不正确。烧瓶

时间:2020-02-13 18:33:42

标签: python flask

我是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)]

请有人告诉我该如何解决?我是烧瓶新手

感谢您的帮助

2 个答案:

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