python - 使用 Python、Pandas 和/或 Jinja2 将原始 csv 数据合并到 html 模板中的干净代码
问题描述
带有 RAW CSV 数据字段的 HTML 模板:
<body>
<pre id="csv" style="display: none">
{{ RAW CSV DATA }}
</pre>
</body>
这个简短的教程展示了如何读取模板并呈现一个新的 html,但不展示如何将输出保存为另一个文件,例如“result.html”。
https://techmonger.github.io/69/jinja2-render-html/
目前使用 Pandas 处理 RAW CSV DATA 并将其写入名为“test.csv”的文件:
import numpy as np
import pandas as pd
# Ticker data
input_file = 'tick.csv'
# Read csv input file Date, Adj_high, Adj_low into Pandas dataframe
df = pd.read_csv(input_file, usecols=[0,9,10],
parse_dates=['DATE'], date_parser = pd.to_datetime)
# Write DATE, ADJ_HIGH, ADJ_LOW to csv file
df.to_csv('test.csv', index=False)
包含 RAW CSV 数据的文件“test.csv”示例:
DATE,ADJ_HIGH,ADJ_LOW
2018-04-27,164.33,160.63
2018-04-30,167.26,161.84
2018-05-01,169.20,165.27
2018-05-02,177.75,173.80
2018-05-03,177.50,174.44
如果可能的话,如何使用 Pandas 将 RAW CSV DATA 写入 html 模板?或者,如何使用 Python/Pandas(有或没有 Jinja2)来读取 test.csv 文件并将其写入“pre”标签之间的 HTML 模板中?
生成的 HTML 文件如下所示:
<body>
<pre id="csv" style="display: none">
DATE,ADJ_HIGH,ADJ_LOW
2018-04-27,164.33,160.63
2018-04-30,167.26,161.84
2018-05-01,169.20,165.27
2018-05-02,177.75,173.80
2018-05-03,177.50,174.44
</pre>
</body>
解决方案
正如亨利埃克所评论的那样,to_csv
没有位置参数只返回字符串,所以..
import jinja2
t = jinja2.Template('<pre>{{ raw_csv_data }}</pre>')
csv_data = df.to_csv(index=False)
html_string = t.render(raw_csv_data=csv_data)
推荐阅读
- pandas - 确定更改点日期的函数
- pandas - 将用熊猫切割的垃圾箱传递给一个函数
- javascript - 通过 eventChannel 在 redux-saga 中发出限制文件加载进度
- python - 读取二进制文件时如何解决EOF错误
- java - 为什么 Gson.fromJson() 的 try/catch Exceptions 不起作用?
- php - 尝试在 PHP 中处理一些嵌套的嵌套数组
- azure - How do I properly use ForEach() statement of List?
- java - 没有字符串可以吗?
- javascript - Jquery serializeArray 中断然后继续
- javascript - 类函数在传递到快速路由器时会丢失上下文