虽然您可以从 Pandas 渲染 HTML,然后在 Flask 中渲染该 HTML,但问题是这种方法会阻止对 HTML 进行额外的编辑。为了开始这项任务,我在 Pandas 中创建了一些合成数据
import pandas
df = pandas.DataFrame([{"userID": 4, "customers": 23},
{"userID": 3, "customers": 33},
{"userID": 1, "customers": 42},
{"userID": 5, "customers": 13},])
print(df.to_html())
要包含 URL,一种简单的方法是在生成 HTML 之前尝试将链接作为字符串嵌入到 Pandas 数据框中。问题是 Pandas 转换字符串:
import pandas
df = pandas.DataFrame([{"userID": "<a href='helo'>4</a>", "customers": 23},
{"userID": 3, "customers": 33},
{"userID": 1, "customers": 42},
{"userID": 5, "customers": 13},])
print(df.to_html())
产生一个包含字符串&lt;a href='helo'&gt;4&lt;/a&gt;的单元格
要将超链接保留为 HTML,请告诉 Pandas 不要转义特殊字符。
import pandas
df = pandas.DataFrame([{"userID": "<a href='helo'>4</a>", "customers": 23},
{"userID": 3, "customers": 33},
{"userID": 1, "customers": 42},
{"userID": 5, "customers": 13},])
print(df.to_html(escape=False))
下一个任务是将链接注入数据框:
list_of_rows = []
for index, row in df.iterrows():
new_row = {'customers': dict(row)['customers']} # keep the old data
uid = str(dict(row)['userID'])
new_row['userID'] = "<a href='http://url.com/"+uid+"'>"+uid+"</a>"
list_of_rows.append(new_row)
df_with_links = pandas.DataFrame(list_of_rows)
将这些技术整合到您的代码中,
@app.route('/example')
def dataframe():
df = pd.read_csv("my.csv")
list_of_rows = []
for index, row in df.iterrows():
new_row = {'customers': dict(row)['customers']} # keep the old data
uid = str(dict(row)['userID'])
new_row['userID'] = "<a href='http://url.com/"+uid+"'>"+uid+"</a>"
list_of_rows.append(new_row)
df_with_links = pandas.DataFrame(list_of_rows)
return render_template("example.html", data=df_with_links.to_html(escape=False))