定义一个函数以在python中生成html页面
尝试创建几个包含来自读取csv文件的表的网页,我尝试定义一个函数来创建html网页,而不是多次编写相同的代码 读取我的csv文件:定义一个函数以在python中生成html页面,python,html,csv,Python,Html,Csv,尝试创建几个包含来自读取csv文件的表的网页,我尝试定义一个函数来创建html网页,而不是多次编写相同的代码 读取我的csv文件: infile = open("new.csv", "r") data = [] for line in infile: cols = line.split(",") Oposition = cols[0] Winner = cols[1] Margin = cols[2] Ground = cols[3] Year =
infile = open("new.csv", "r")
data = []
for line in infile:
cols = line.split(",")
Oposition = cols[0]
Winner = cols[1]
Margin = cols[2]
Ground = cols[3]
Year = cols[4]
pair = (Oposition, Winner, Margin, Ground, Year)
data.append(pair)
infile.close()
到目前为止,我的代码是:
page = """<!DOCTYPE html>
<html>
<head>
<title>abc</title>
<style>
h1 {
text-align: center;
}
body {
background-image: url("2014.png");
background-repeat: no-repeat;
background-position: right top;
background-attachment: fixed;
}
</style>
</head>
<body>
<h1>{{heading}}</h1>
{{paragraph}}
<p><a href = "index.html">Back to main page</a></p>
<table border="1"><tr><th>Oposition</th><th>Winner</th><th>Margin</th><th>Ground</th><th>Year</th></tr>
"""
out1=page.format(heading = "2012 Stats", paragraph = "<p>aaaaaaa</p>")
out2 = page.format(heading = "2013 Stats", paragraph = "<p>bbbbb</P>")
out3 = page.format(heading = "2014 Stats", paragraph = "<p>cccc</P>")
out4 = page.format(heading = "2015 Stats", paragraph = "<p>ddddCSK</p>")
def write_html_file(filename, body):
out = open(filename, "w")
out.write(body)
write_html_file("2012.html",out1)
write_html_file("2013.html",out2)
write_html_file("2014.html",out3)
write_html_file("2015.html",out4)
for r in data:
if ''.join(r[4].split()) == "2012":
Oposition = r[0]
Winner = r[1]
Margin = r[2]
Ground=r[3]
Year = r[4]
out1.write("<tr> <td>" + Oposition+ '</td><td> '+ Winner+'</td><td> '+Margin+'</td><td> '+Ground+' </td><td>'+ Year+ " </td></tr>")
elif ''.join(r[4].split()) == "2013":
Oposition = r[0]
Winner = r[1]
Margin = r[2]
Ground=r[3]
Year = r[4]
out2.write("<tr> <td>" + Oposition+ '</td><td> '+ Winner+'</td><td> '+Margin+'</td><td> '+Ground+' </td><td>'+ Year+ " </td></tr>")
elif ''.join(r[4].split()) == "2014":
Oposition = r[0]
Winner = r[1]
Margin = r[2]
Ground=r[3]
Year = r[4]
out3.write("<tr> <td>" + Oposition+ '</td><td> '+ Winner+'</td><td> '+Margin+'</td><td> '+Ground+' </td><td>'+ Year+ " </td></tr>")
elif ''.join(r[4].split()) == "2015":
Oposition = r[0]
Winner = r[1]
Margin = r[2]
Ground=r[3]
Year = r[4]
out4.write("<tr> <td>" + Oposition+ '</td><td> '+ Winner+'</td><td> '+Margin+'</td><td> '+Ground+' </td><td>'+ Year+ " </td></tr>")
def output(a):
a.write("</table> </body>\n")
a.write("</html>\n")
a.close()
output(out1)
output(out2)
output(out3)
output(out4)
page=”“”
abc
h1{
文本对齐:居中;
}
身体{
背景图片:url(“2014.png”);
背景重复:无重复;
背景位置:右上角;
背景附件:固定;
}
{{heading}}
{{段落}
OpositionWinnerMarginGroundYear
"""
out1=page.format(heading=“2012统计”,段落=“aaaaaaa”)
out2=页面格式(heading=“2013统计”,段落=“bbbbb”)
out3=页码格式(标题=“2014统计”,段落=“cccc”)
out4=页面格式(heading=“2015 Stats”,段落=“ddcsk”)
def write_html_文件(文件名、正文):
out=打开(文件名为“w”)
写出(正文)
编写html文件(“2012.html”,out1)
编写html文件(“2013.html”,out2)
编写html文件(“2014.html”,out3)
编写html文件(“2015.html”,out4)
对于数据中的r:
如果“”。加入(r[4].split())=“2012”:
位置=r[0]
获胜者=r[1]
保证金=r[2]
地面=r[3]
年份=r[4]
输出1.写(“+Oposition+”+“+Winner+”+“+Margin+”+“+Ground+”+“+Year+”)
elif“”。加入(r[4].split())=“2013”:
位置=r[0]
获胜者=r[1]
保证金=r[2]
地面=r[3]
年份=r[4]
输出2.写(“+Oposition+”+“+Winner+”+“+Margin+”+“+Ground+”+“+Year+”)
elif“”。加入(r[4].split())=“2014”:
位置=r[0]
获胜者=r[1]
保证金=r[2]
地面=r[3]
年份=r[4]
输出3.写(“+Oposition+”+“+Winner+”+“+Margin+”+“+Ground+”+“+Year+”)
elif“”。加入(r[4].split())=“2015”:
位置=r[0]
获胜者=r[1]
保证金=r[2]
地面=r[3]
年份=r[4]
输出4.写(“+Oposition+”+“+Winner+”+“+Margin+”+“+Ground+”+“+Year+”)
def输出(a):
a、 写入(“\n”)
a、 写入(“\n”)
a、 关闭()
输出(out1)
输出(输出2)
输出(输出3)
输出(输出4)
我试图根据2012年、2013年、2014年、2015年的数据制作表格,并制作包含每一年的html页面。我就是搞不懂。
有什么帮助或其他选择吗?非常感谢
我收到一条错误消息,上面说:
---> 25 page1 = page.format(heading = "2012 Stats", paragraph = "<p>aaaa</p>")
KeyError: '\n text-align'
-->25 page1=page.format(heading=“2012 Stats”,段落=“aaaa”)
KeyError:“\n文本对齐”
简短回答
Python的内置变量是一个由单个参数包围的变量。这就是为什么“\n text align”被视为一个键,而它本来是一个css样式
解决方案
您可以继续转义css片段,但我不推荐这样做,因为html文本不可读,并且很难维护
因此,请使用模板引擎提供帮助。有许多模板引擎:。。等等。因为我对第一个比较熟悉,所以让我向您展示如何使用page1工作:
from jinja2 import Environment
env = Environment()
page_template = env.from_string(page)
page1 = page_template(heading="2012 Stats", paragraph="<p>aaaaaaa</p>")
替代解决方案
您可以使用my library和获取为您呈现的html表。示例代码是:
import pyexcel as p
sheet = p.get_sheet(file_name='new.csv')
sheet.colnames = ['Oposition', 'Winner', 'Margin', 'Ground', 'Year']
sheet.name = "2012 Stats"
print(sheet.html)
要运行上述代码,您需要安装以下两个附加软件包:
$ pip install pyexcel pyexcel-text
我收到了以下错误消息:-->38 out1=page.format(heading=“2012 Stats”,paragration=“aaaaa”)键错误:“\n text-align”您是否看过类似于
jinja2
的内容,在其中定义HTML模板,向其传递上下文,然后它会为您构建文档?看起来您的out2和out3以大写结束段落标记结尾。更正了它。但仍然会收到相同的错误消息是的,我可以使用jinja2使其工作。非常感激
$ pip install pyexcel pyexcel-text