从csv读取多个数据

时间:2020-06-10 18:16:00

标签: html python-3.x csv flask

我有一个csv文件,我需要将其读取为列表并将所有项目添加到输入表单中,但是当我使用特定的option value时,可以通过按逗号添加它们,但是当我从.csv中读取它们时文件,此方法不起作用。可能是什么问题?

with open('templates/Testing.csv') as f:
        reader = csv.reader(f)
        myvalues = next(reader)


@app.route('/', methods=['GET'])
def page_show():
    return render_template('includes/default.html', myvalues=myvalues)

.csv方法(按逗号不起作用)

<form action="/action" method="POST">
  <input list="myvalues" multiple>
  <datalist id="myvalues">
    {% for val in myvalues %}
        <option value="{{val}}">{{val}}</option>
    {% endfor %}
  </datalist>
  <input type="submit">
</form>

添加特定值方法(按逗号即可)

<form action="/action" method="POST">
  <input list="myvalues" multiple>
  <datalist id="myvalues">
        <option value="one">one</option>
        <option value="two">one</option>
        <option value="three">one</option>
        <option value="four">one</option>
  </datalist>
  <input type="submit">
</form>

1 个答案:

答案 0 :(得分:0)

我想我至少可以解决您的问题的一部分。

首先,next()函数仅返回列表的下一项(csv数据)。我认为您应该使用list()函数。 此函数创建一个列表,您可以在其中循环访问default.html

要解决变量default.html中不可访问的问题,可能会给您以下错误:UnboundLocalError: local variable 'myvalues' referenced before assignment。这意味着您正在尝试将myvalues分配给myvalues,但是python不知道在哪里寻找该变量。进一步了解here

那么您将如何解决呢?只需将myvalues重命名为myData之类。请参阅下面的完整代码:

main.py

myvalues = []
with open('templates/Testing.csv') as f:
        reader = csv.reader(f)
        myvalues = next(reader)


@app.route('/', methods=['GET'])
def page_show():
    return render_template('includes/default.html', myData=myvalues)

default.html:


<form action="/action" method="POST">
  <input list="myvalues" multiple>
  <datalist id="myvalues">
    {% for val in myData %}
        <option value="{{val}}">{{val}}</option>
    {% endfor %}
  </datalist>
  <input type="submit">
</form>

顺便说一句

我可以通过按逗号添加它们,但是当我从.csv文件中读取它们时,此方法不起作用

我不知道你的意思,请详细说明。

希望这会有所帮助!如果没有,请发表评论