代码生成的表格示例: |
内容 | 说明 |
Fry | 胡莱 |
Bender | 班德 |
Morty | 莫蒂 |
Rick | 瑞克 |
Bojackhorseman | 波杰克 |
Jerry | loser |
<table>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>内容font>
td>
<td bgcolor=#f0f0f0 align=left>
<font color=orange size=4 face=楷体>说明font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Fryfont>
td>
<td bgcolor=lightpink align=left>
<font color=hotpink size=4 face=楷体>胡莱font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Benderfont>
td>
<td bgcolor=#f0f0f0 align=left>
<font color=orange size=4 face=楷体>班德font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Mortyfont>
td>
<td bgcolor=lightpink align=left>
<font color=hotpink size=4 face=楷体>莫蒂font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Rickfont>
td>
<td bgcolor=#f0f0f0 align=left>
<font color=orange size=4 face=楷体>瑞克font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Bojackhorsemanfont>
td>
<td bgcolor=lightpink align=left>
<font color=hotpink size=4 face=楷体>波杰克font>
td>
tr>
<tr>
<td align=center>
<font color=blue size=4 face=YaHei>Jerryfont>
td>
<td bgcolor=#f0f0f0 align=left>
<font color=orange size=4 face=楷体>loserfont>
td>
tr>
table>
搞清楚了结构,就可以编写一个模板,然后直接传参、循环就可。
参数与模板(单行):
line1 = {
# 该行表格第一列内容
'name': self.name[0],
# 该行表格第二列内容
'mean': self.mean[0],
# 两列内容的对齐方式列表,如['center', 'center']
# 对齐方式 left right center
'align': self.align,
# 两列字体的颜色列表 ['red', 'blue']
'fcolor': self.fcolors1,
# 两列字体的大小列表 [4, 5]
'fsize': self.size,
# 两列内容的字体列表 ['楷体', '宋体']
'face': self.face,
# 第二列的背景颜色 'red'/'#f0f0f0'
'bg': self.bg{0],
}
f'''
{line1['align'][0]}>
{line1['fcolor'][0]} size={line1['fsize'][0]} face={line1['face'][0]}>{line1['name']}
{line1['bg']} align={line1['align'][1]}>
{line1['fcolor'][1]} size={line1['fsize'][1]} face={line1['face'][1]}>{line1['mean']}
'''
从文件导入数据:
做出如下约定:
文件每一行仅写入两个数据(对应表格的每一行的两列)
每一行的两个数据由一个空格隔开。
def getdata(self, file):
with open(file, 'r', encoding='utf8') as f:
for line in f.readlines():
dats = line.rstrip('\n').split(' ')
self.name.append(dats[0])
self.mean.append(dats[-1])
f.close()
细节
- 每次生成两行,于是就要考虑总的数据量是不是偶数行不是的话添加一个空数据。
- 同时打开了打印与存储到文件的功能。也就是说,最终生成的结果会通过print打印出来,也会存储到指定的html文件中(方便复制粘贴与修改
- 可以通过修参数调整达到自由修改配色、字体、对齐
总代码:
class gen2l():
def __init__(self, file):
self.name = []
self.mean = []
self.html = ''
self.getdata(file)
if len(self.name) % 2:
self.name.append('')
self.mean.append('')
center, left, right = 'center', 'left', 'right'
# 两列的对齐方式
self.align = [center, left]
# 第一行两列的字体颜色
self.fcolors1 = ['blue', 'orange']
# 第二行两列的字体颜色
self.fcolors2 = ['blue', 'hotpink']
# 两列字体大小
self.size = [4, 4]
# 两列的字体
self.face = ['YaHei', '楷体']
# 两行的背景颜色
self.bg = ['snow', '#f0f0f0']
def getdata(self, file):
with open(file, 'r', encoding='utf8') as f:
for line in f.readlines():
dats = line.rstrip('\n').split(' ')
self.name.append(dats[0])
self.mean.append(dats[-1])
f.close()
def doit(self):
print('')
while self.name[0]:
line1 = {
'name': self.name[0],
'mean': self.mean[0],
'align': self.align,
'fcolor': self.fcolors1,
'fsize': self.size,
'face': self.face,
'bg': self.bg[0],
}
line2 = {
'name': self.name[1],
'mean': self.mean[1],
'align': self.align,
'fcolor': self.fcolors2,
'fsize': self.size,
'face': self.face,
'bg': self.bg[1],
}
st1 = f'''
{line1['align'][0]}>
{line1['fcolor'][0]} size={line1['fsize'][0]} face={line1['face'][0]}>{line1['name']}
{line1['bg']} align={line1['align'][1]}>
{line1['fcolor'][1]} size={line1['fsize'][1]} face={line1['face'][1]}>{line1['mean']}
'''
st2 = f'''
{line2['align'][0]}>
{line2['fcolor'][0]} size={line2['fsize'][0]} face={line2['face'][0]}>{line2['name']}
{line2['bg']} align={line2['align'][1]}>
{line2['fcolor'][1]} size={line2['fsize'][1]} face={line2['face'][1]}>{line2['mean']}
'''
st = st1 + '\n' + st2
if not self.name[1]:
st = st1
self.html += st + '\n'
print(st)
if len(self.name) == 2:
break
del self.name[:2]
del self.mean[:2]
print('
')
# 结果保存到这个文件
with open('out.html', 'w', encoding='utf8') as f:
f.write(f'\n{self.html}\n
')
f.close()
def main():
# 数据存于这个文件
file = 'data.txt'
gen = gen2l(file)
center, left, right = 'center', 'left', 'right'
# 自由修改配色、字体、对齐
# 两列的对齐方式
gen.align = [center, left]
# 第一行两列的字体颜色
gen.fcolors1 = ['blue', 'orange']
# 第二行两列的字体颜色
gen.fcolors2 = ['blue', 'hotpink']
# 两列字体大小
gen.size = [4, 4]
# 两列的字体
gen.face = ['YaHei', '楷体']
# 两行的背景颜色
gen.bg = ['snow', '#f0f0f0']
gen.doit()
main()
如果,有时间,打算编写一个复杂表格代码生成脚本【就是有复杂合并、多列、配色更花哨、甚至自动配色(好看那种),或许再加上点丑陋的GUI