Результат на странице html неверен. Flask - PullRequest
0 голосов
/ 13 февраля 2020

Я новичок в 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 

Моя flask функция 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)]

Пожалуйста, кто-нибудь может сказать мне, как я могу решить это? Я новичок в flask

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Ваш List ввод представлен в виде строки, когда вы ожидаете список строк. Попробуйте использовать split() для преобразования его в список.

Например, если ваш список разделен запятыми:

List = request.form['List'].split(',')

Редактировать: По комментарию, если вы ' Чтобы ввести строковое представление списка, попробуйте ast.literal_eval, чтобы выполнить оценку строки как Python литерал:

List = ast.literal_eval(request.form['List'])
0 голосов
/ 13 февраля 2020

Попробуйте преобразовать ваш словарь в JSON строку , хотя я бы не удивился, если бы Flask уже сделал это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...