[英]csv file to editable table in html using python
我有一個 csv 文件。 我已經轉換成html文件。 如何使 html 表可從 python 編輯
import pandas as pd
df=pd.read_csv("D:/valli/abc.csv")
df.to_html("x.html")
我不知道如何繼續使用 flask、javascript 和 jquery
這可能對您有用。 我不太了解 HTML,所以如果我不理解表格的正確結構,請告訴我。
我正在使用具有以下值的示例數據框:
Id Value Name
0 1 2 Paul
1 2 5 Sam
2 3 7 Jill
3 4 10 Karl
4 5 15 Sally
5 6 4 Irma
為了實現您的目標,我們將使用 Python 的 join() 函數。 這是腳本:
import pandas as pd
ddict = {
'Id': ['1', '2', '3', '4', '5', '6'],
'Value': ['2','5', '7', '10', '15', '4'],
'Name': ['Paul','Sam', 'Jill', 'Karl', 'Sally', 'Irma']
}
df = pd.DataFrame(ddict)
### Print the table tag
print('<table>')
### Print the headers to a <th> tag; Close each <th> for every line
print('\t<tr>\n\t\t<th>' + '\t\t<th>'.join([f'{i}</th>\n' for i in df.columns.values.tolist()]) + '\t</tr>')
### Iterate over dataframe values; Enclose each value in a <td> tag
for i, v in enumerate(df.values):
print('\t<tr>\n\t\t<td>' + '\t\t<td>'.join([f'{x}</td>\n' for x in v]) + '\t</tr>')
### Print table tag closure.
print('</table>')
輸出:
<table>
<tr>
<th>Id</th>
<th>Value</th>
<th>Name</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>Paul</td>
</tr>
<tr>
<td>2</td>
<td>5</td>
<td>Sam</td>
</tr>
<tr>
<td>3</td>
<td>7</td>
<td>Jill</td>
</tr>
<tr>
<td>4</td>
<td>10</td>
<td>Karl</td>
</tr>
<tr>
<td>5</td>
<td>15</td>
<td>Sally</td>
</tr>
<tr>
<td>6</td>
<td>4</td>
<td>Irma</td>
</tr>
</table>
測試和工作
參考下面的答案
使用 Flask、Jinja2 模板渲染一個可編輯的表格,然后處理返回的表格數據
您可以通過使用 FormField 從數據庫生成可編輯表格來執行此操作 您可以使用數據庫,也可以使用 CSV 下面的示例顯示了如何從 csv 生成可編輯表格
表單.py
class MemberForm(Form):
name = StringField('name')
member_id = StringField('member_id')
inbox_share = IntegerField('inbox_share')
# etc.
class TeamForm(Form):
title = StringField('title')
teammembers = FieldList(FormField(MemberForm))
視圖.py
@app.route('/support/team-members-update', methods=['GET','POST'])
def update_team_member():
#below is to cover csv col to list
columns = defaultdict(list)
with open('file.csv') as cavfile:
reader = csv.DictReader(csvfile)
for row in render:
for (k,v) in row.items():
columns[k].append(v)
member_id= columns['name of your col 1'] #this will generate a list of your col
inbox_share = columns['name of you col 2'] #this will generate list of you col
for i,j in zip(list_col1, list_col2):
member_form = MemberForm()
member_form.member_id = i
member_form.inbox_share = j
teamform.teammembers.append_entry(member_form)
return render_template('ediit-team.html',teamform=teamform)
編輯團隊.html
<html>
<head>
<title>Edit Team Members</title>
</head>
<body>
<h1>Edit Team</h1>
<div>
<form action="" method="post" name="teamform">
{{ teamform.hidden_tag() }}
Team Title: {{ teamform.title }}<br>
<div>
<table>
<tr>
<th> Name </th>
<th> ID </th>
<th> Inbox Share </th>
</tr>
{% for member in teamform.teammembers %}
<tr>
<td>{{ member.member_id }}</td>
<td>{{ member.inbox_share }}</td>
</tr>
{% endfor %}
</table>
</div>
<p><input type="submit" name="edit" value="Send"></p>
</form>
</div>
</body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.