Python之打印html 表格

来源:互联网 发布:淘宝直播没平台网址 编辑:程序博客网 时间:2024/06/04 18:28

        现要实现打印html格式的表格代码,利用Python对字符串str.format()格式化操作进行处理,在日常对CVS格式文件处理过程当中,经常会将CVS格式文件进行转换,在正式场合是程序读取CVS文件进行转换并输出到html格式的文件当中,但现在只是实现一下转换的过程,需要输入以逗号分隔的数据。

        在设计程式的时候,需要先定义一下整个代码的框架,首先我们要定义一个主函数main(),虽然Python没有规定入口函数,一般在正式的开发中都设计了一个main()函数作为程序的入口函数,或许这是一种规范吧。然后我们在定义一个打印表头的方法print_head(),并在主函数里进行调用。再定义一个打印表尾的方法print_end(),也在主函数中进行调用。定义print_line()为打印表格行,定义extract_field()处理cvs行数据转换为list集合数据。最后再定义一个处理特殊符号的方法escape_html(),因为在html代码中为了避免与它的标签冲突,特要进行特殊符号的转换,如&-->& 还有就是对长度过长的数据要进行处理并用...代替

源代码:

#Author Tandaly#Date 2013-04-09#File Csv2html.py#主函数def main():print_head()maxWidth = 100count = 0while True:try:line = str(input())if count == 0:color = "lightgreen"elif count%2 == 0:color = "white"else:color = "lightyellow"print_line(line, color, maxWidth)count += 1except EOFError:breakprint_end()#打印表格头def print_head():print("<table border=\"1\">")#打印表行def print_line(line, color, maxWidth):tr = "<tr bgcolor=\"{0}\">".format(color)tds = ""if line is not None and len(line) > 0:fields = axtract_fields(line)for filed in fields:td = "<td align=\"right\">{0}</td>".format(filed if (len(str(filed)) <= maxWidth) else (str(filed)[:100] + "..."))tds += tdtr += "{0}</tr>".format(tds)print(tr)#打印表格尾def print_end():print("</table>")#抽取行值def axtract_fields(line):line = escape_html(line)fields = []field = ""quote = Nonefor c in line:if c in "\"":if quote is None:quote = celif quote == c:quote = Nonecontinueif quote is not None:field += ccontinueif c in ",":fields.append(field)field = ""else:field += cif len(field) > 0:fields.append(field)return fields#处理特殊符号def escape_html(text):text = text.replace("&", "&")text = text.replace(">", ">")text = text.replace("<", "<")return text#程序入口if __name__ == "__main__":main()

运行结果:

>>> <table border="1">"nihao","wo"<tr bgcolor="lightgreen"><td align="right">nihao</td><td align="right">wo</td></tr>"lsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsfdddddddddddddddddddddddssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooosdjfsldkfjsladjfsladjflasjdfljslkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkksssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss","tandaly"<tr bgcolor="lightyellow"><td align="right">lsdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd...</td><td align="right">tandaly</td></tr>"ddddddddddddddddsllsflsdjflsdjfljasfjslfjleiwiwooooooooooosdlsdfkckslslllllwllllllllllllllllllllllllllllllllllllllllllllllllllllllgfdjslfjsdlkkkkkkkkkkksdfssssssssssssss", 34<tr bgcolor="white"><td align="right">ddddddddddddddddsllsflsdjflsdjfljasfjslfjleiwiwooooooooooosdlsdfkckslslllllwllllllllllllllllllllllll...</td><td align="right"> 34</td></tr></table>











作者:Tandaly

地址:http://blog.csdn.net/tandaly/article/details/8781131