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>Fry</font>
    </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>Bender</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>Morty</font>
    </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>Rick</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>Bojackhorseman</font>
    </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>Jerry</font>
    </td>
    <td bgcolor=#f0f0f0 align=left>
        <font color=orange size=4 face=楷体>loser</font>
    </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'''<tr>
    <td align={line1['align'][0]}>
        <font color={line1['fcolor'][0]} size={line1['fsize'][0]} face={line1['face'][0]}>{line1['name']}</font>
    </td>
    <td bgcolor={line1['bg']} align={line1['align'][1]}>
        <font color={line1['fcolor'][1]} size={line1['fsize'][1]} face={line1['face'][1]}>{line1['mean']}</font>
    </td>
</tr>'''

从文件导入数据:

做出如下约定:

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

在这里插入图片描述

对应函数:
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('<table>')
        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'''<tr>
    <td align={line1['align'][0]}>
        <font color={line1['fcolor'][0]} size={line1['fsize'][0]} face={line1['face'][0]}>{line1['name']}</font>
    </td>
    <td bgcolor={line1['bg']} align={line1['align'][1]}>
        <font color={line1['fcolor'][1]} size={line1['fsize'][1]} face={line1['face'][1]}>{line1['mean']}</font>
    </td>
</tr>'''
            st2 = f'''<tr>
    <td align={line2['align'][0]}>
        <font color={line2['fcolor'][0]} size={line2['fsize'][0]} face={line2['face'][0]}>{line2['name']}</font>
    </td>
    <td bgcolor={line2['bg']} align={line2['align'][1]}>
        <font color={line2['fcolor'][1]} size={line2['fsize'][1]} face={line2['face'][1]}>{line2['mean']}</font>
    </td>
</tr>'''
            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('</table>')
        # 结果保存到这个文件
        with open('out.html', 'w', encoding='utf8') as f:
            f.write(f'<table>\n{self.html}\n</table>')
            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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在 Vue 中使用 Markdown 渲染文档时,如果文档内容比较长,我们需要为用户提供侧边栏目录导航,方便用户快速定位到所需部分。下面是一个简单的方法来实现自动生成 Markdown 文档的侧边栏目录。 首先,我们需要安装 `markdown-it` 和 `markdown-it-toc`: ```bash npm install markdown-it markdown-it-toc --save ``` 然后,在 Vue 组件中引入并使用它们: ```javascript <template> <div> <!-- 目录导航 --> <div v-html="toc"></div> <!-- Markdown 内容 --> <div v-html="html"></div> </div> </template> <script> import MarkdownIt from 'markdown-it' import MarkdownItToc from 'markdown-it-toc' export default { data() { return { markdown: '# 一级标题\n\n## 二级标题\n\n### 三级标题', toc: '', // 目录导航 html: '', // 渲染后的 HTML } }, mounted() { // 解析 Markdown 文档 const md = new MarkdownIt() md.use(MarkdownItToc, { tocFirstLevel: 1 }) const result = md.render(this.markdown) // 生成目录导航 this.toc = md.toc // 渲染 Markdown 内容 this.html = result }, } </script> ``` 在上面的代码中,我们使用了 `markdown-it-toc` 插件来自动生成目录导航,并将导航内容存储在 `toc` 变量中。然后,我们使用 `v-html` 指令将导航和 Markdown 文档内容渲染到页面上。 注意,`markdown-it-toc` 插件需要在解析 Markdown 文档之前使用 `md.use(MarkdownItToc)` 方法来注册。在注册时,我们可以设置 `tocFirstLevel` 属性来指定目录导航的起始层级,默认为 `1`。 最后,我们需要使用 CSS 样式来美化目录导航和 Markdown 内容,以便更好地展示给用户。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的壳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值