Markdown花样表格一键生成-基于Python

代码生成的表格示例:
内容 说明
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']}
    
'''

从文件导入数据:

做出如下约定:

  • 文件每一行仅写入两个数据(对应表格的每一行的两列)
  • 每一行的两个数据由一个空格隔开。

Markdown花样表格一键生成-基于Python_第1张图片

对应函数:
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''''''
            st2 =f''''''
            st = st1 +'\n'+ st2
            ifnot self.name[1]:
                st = st1
            self.html += st +'\n'print(st)iflen(self.name)==2:breakdel self.name[:2]del self.mean[:2]print('
{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']}
{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']}
'
) # 结果保存到这个文件 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


你可能感兴趣的:(MarkDown,python,html,markdown,csdn博客技巧)