Markdown花样表格一键生成-基于Python
生活随笔
收集整理的這篇文章主要介紹了
Markdown花样表格一键生成-基于Python
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 代碼生成的表格示例: |
| 內容 | 說明 |
| Fry | 胡萊 |
| Bender | 班德 |
| Morty | 莫蒂 |
| Rick | 瑞克 |
| Bojackhorseman | 波杰克 |
| Jerry | loser |
搞清楚了結構,就可以編寫一個模板,然后直接傳參、循環就可。
參數與模板(單行):
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' + st2if not self.name[1]:st = st1self.html += st + '\n'print(st)if len(self.name) == 2:breakdel 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
總結
以上是生活随笔為你收集整理的Markdown花样表格一键生成-基于Python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信支付分700分,有什么好处?
- 下一篇: 2022-2028全球与中国锂电池用PV