Python之打印html 表格

        现要实现打印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 = 100
	count = 0
	while 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 += 1
		except EOFError:
			break
	print_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 += td

		tr += "{0}</tr>".format(tds)
		print(tr)
	
#打印表格尾
def print_end():
	print("</table>")

#抽取行值
def axtract_fields(line):
	line = escape_html(line)
	fields = []
	field = ""
	quote = None
	for c in line:
		if c in "\"":
			if quote is None:
				quote = c
			elif quote == c:
				quote = None
			continue
		if quote is not None:
			field += c
			continue
		if c in ",":
			fields.append(field)
			field = ""
		else:
			field += c
	if 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值