使用python、pandas和/或jinja2将原始csv数据合并到html模板中的干净代码

d4so4syb  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(379)

包含原始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处理原始csv数据并将其写入名为“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)

包含原始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将原始csv数据写入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>
zfycwa2u

zfycwa2u1#

正如亨利·埃克所说, 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)
klh5stk1

klh5stk12#

此代码用于在csv数据中写入不带换行符的输出文件:

import jinja2
import pandas as pd

# AAPL EOD data file

input_file = 'AAPL.csv'

# Output File

output_file = 'jinja_test.html'

# Read csv input file Date, Adj_high, Adj_low into Pandas dataframe

df = pd.read_csv(input_file, usecols=[0,9,10], 
            parse_dates=[0], date_parser = pd.to_datetime)

t = jinja2.Template('<pre>{{ raw_csv_data }}</pre>')
csv_data = df.to_csv(index=False)
html_string = t.render(raw_csv_data=csv_data)

# Write result of render as html output file

with open(output_file, "w", newline='') as file:
    file.write(html_string)

相关问题