Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义一个函数以在python中生成html页面_Python_Html_Csv - Fatal编程技术网

定义一个函数以在python中生成html页面

定义一个函数以在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 =

尝试创建几个包含来自读取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 = 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