用python实现打印表格的方法
off999 2025-04-24 07:09 55 浏览 0 评论
最近在做表格输出的任务,一般有两种方法实现在控制台打印,一种是根据表格的输出规则自己写代码实现,另外一种是安装python的第三方依赖包prettytable实现这个效果。
方法1:根据表格规则写代码实现
从输出结果可以发现几个关键的实现点:
1. 由数据项的各个属性,整理出表头;
2. 计算每个属性对应的最大宽度,作为每列的宽度;
3. 每列左右留一些空;
4. 表头上下,以及数据项末尾添加一行 --+-- 外围;
5. 循环每项,各项左右使用 | 做外围;
6. 需支持居中显示或左对齐,这些可以通过计算列的总长度,再补空格来实现。
- 方法1的python2源代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import json
# 数据项
timingInfo = [{
'url': 'https://aaa.bbb.net/ccc/article/details/11',
'duration(ms)': 121.12,
'start(ms)': 222,
'type': 'html',
'size(kb)': 22.01
}, {
'url': '/nd-element-in-list-to-another-list-of-strings',
'duration(ms)': 121.22,
'start(ms)': 3332,
'type': 'css',
'size(kb)': 22.01
}, {
'url': '/path2',
'duration(ms)': '121.12434234 (1212312.12 + 121212)',
'start(ms)': 3332,
'type': 'css',
'size(kb)': 22.01
}, {
'url': '/nd-element-in-list-to-another-list-of-strings',
'duration(ms)': 121.42323423423,
'start(ms)': 3332,
'type': 'css',
'size(kb)': 22.01
}, {
'url': 'path2',
'duration(ms)': '121.11 (111.11 + 20)',
'start(ms)': 3332,
'type': 'css',
'size(kb)': 22.01
}]
# 提取表头
keyHeader = timingInfo[0].keys()
# 存放每列的最大长度
keyMaxLen = {}
for item in timingInfo:
for i,h in enumerate(keyHeader):
# 计算每个属性对应的最大长度
maxLen = max(len(h), len(str(item[h])))
if keyMaxLen.get(h, None):
maxLen = max(maxLen, keyMaxLen[h])
keyMaxLen[h] = maxLen
print keyMaxLen
#
def printGroup(group):
for item in group:
print '\r'
for i,h in enumerate(keyHeader):
itemLen = keyMaxLen.get(h, str(h)) + 4
# 补空位并居中
s = str(item[h]).center(itemLen, '-' if item[h] == '-' else ' ')
icon = '|'
if item[h] == '-':
icon = '+'
s = (icon if i == 0 else '') + s[1:len(s)] + icon
print s,
print '\r'
print '\n[timing info]'
# 占位项
tag = {}
for i,h in enumerate(keyHeader):
tag[h] = '-'
# 前后添上
timingInfo.insert(0, tag)
timingInfo.append(tag)
# 第一行需要先单独打印出来
printGroup([tag])
# 再单独打印表头
for i,h in enumerate(keyHeader):
# 留空位4
itemLen = keyMaxLen.get(h, str(h)) + 4
# 快捷居中并补空位 左对齐可使用 ljust之类
s = h.center(itemLen)
s = ('|' if i == 0 else '') + s[1:len(s)] + '|'
print s,
# 打印后面的数据项,包括两条 --+--占位
printGroup(timingInfo)
方法1是直接打印出来的,print 默认一行打印,要做到按项拼接,就得在print后面加个逗号。这样只能在控制台输出,而如果要打印到日志中,就得换种做法,使用字符串拼接,整个输出就是一个字符串,从头拼到末尾就ok了。
方法2:使用prettytable
实现上图表格输出的源代码如下:
import prettytable as pt
# tb = pt.PrettyTable( ["City name", "Area", "Population", "Annual Rainfall"])
tb = pt.PrettyTable()
tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
tb.add_row(["Adelaide",1295, 1158259, 600.5])
tb.add_row(["Brifasdfae",5905, 1857594, 1146.4])
tb.add_row(["Darwin", 112, 120900, 171423423423423424.7])
tb.add_row(["Hobart", 1357, 205556,619.5])
print(tb)
【总结】因编辑水平有限,文中难免存在个别错误或疏漏,欢迎大家留言区批评指正~~
- 上一篇:Python开发打印服务(1)
- 下一篇:如何在 Python 中打印彩色文本
相关推荐
- 360系统重装软件(360软件怎么重装系统)
-
1、360系统重装大师很好用。但是也有缺点。2、360系统重装大师,附在360安全软件中,安装快捷,运行方便。3、缺点(1)只能进入桌面后使用,如果系统无法进入桌面,则不能使用。(2)暂时只能安装xp...
- deepnode免费版下载(deepnode免费版下载 2025)
-
DeepNude目前只支持Windows和MacOS系统,无法安装在移动手机上。但是在安装之前,用户需要确保电脑的系统环境符合DeepNude的要求:1.Windows系统:要求10Pro/Home...
- win7系统支持什么显卡(win7用什么显卡驱动好)
-
建议使用1511版本的系统使用;2.使用win7没有系统要求,驱动的安装建议到NVIDIA官网上下载早期版本的,382.33或者是385.23的驱动版本都可以的。3.Windows10升级了Direx...
- u盘格式化不了怎么弄(u盘格式化格式不了)
-
答:u盘无法格式化最有效的方法步骤如下。点击系统与安全,进入电脑的控制面板界面,点击上方的系统与安全的选项,在系统界面找到最下方的管理工具功能组。选中u盘,选择管理工具下面的创建并格式化硬盘分区,点击...
- visio viewer(visio viewer怎么打开)
-
visioviewer2010这个软件是不能进行编辑的,只能用来浏览图。如果想要编辑的话,要从网上下载一个VISIO2003来用和使用了WPS是没关系的我以前就是这样用的
- 电脑用光盘重装系统教程(电脑用光盘重装系统步骤)
-
光盘驱动,意思就是计算机在启动的时候首先读光驱,这样的话如果光驱中有具有光启功能的光盘就可以赶在硬盘启动之前读取出来(比如从光盘安装系统的时候)。设置方法:1.启动计算机,并按住DEL键不放,直到...
- 安卓手机flash 下载(安卓手机flash player插件下载)
-
您可以从Adobe官网(https://get.adobe.com/flashplayer/)下载AdobeFlashPlayer最新版本,并在您的手机上安装它。华为手机的最新系统版本已经不再支持...
- 电脑自带的截屏快捷键(电脑自带的截屏快捷键是什么)
-
电脑自带的截屏快捷键如下1、系统自带截屏:按下键盘的“Windows+shift+S”即可启动系统的截屏功能;2、微信截屏:首先,启动电脑微信;然后按下快捷键“Alt+A”来截取屏幕;3、QQ截屏:打...
- windows7我的电脑图标没了(w7电脑上我的电脑图标没了怎么办)
-
恢复电脑桌面图标:先在电脑桌面空白处单击右键,进入个性化。然后在个性化页面,选择主题,下拉找到桌面图标设置。在弹出的桌面图标对话框中,勾选常用的图标,点击确定,即可显示桌面图标。步骤一、进行先软件后硬...
- 安装win7系统usb无法识别(win7安装后 不认usb)
-
一、确认电脑是否有USB支持:1.右击“计算机”,选择“管理”;2.在左侧菜单栏中依次展开“设备管理器”→“系统设备”→“总线控制器”,可以看到有USB项;3.如果没有USB项,表示没有安装USB...
-
- 解除手机浏览器网页限制(手机怎么解除浏览器对网站的拦截)
-
如果要解除手机浏览器禁止访问网页,首先打开设置图标,进去打开屏幕使用时间选项,再打开内容和隐私访问限制选项,接着找到并打开允许的应用选项,然后找到Safari浏览器,把右侧的绿色开关打开,就解除禁止访问了。解决步骤:1.从手机中开启自带的浏...
-
2025-12-12 01:51 off999
- 如何彻底修复ie
-
可以通过清理缓存和数据来修复IE浏览器因为IE浏览器可能会受到缓存和数据的干扰,导致无法正常访问网页或者打开网页很慢。清理浏览器的缓存和数据可以解决这个问题,具体方法是:打开IE浏览器,点击“工具”-...
- 键盘强制关机键是什么(电脑键盘强制关机)
-
Ctrl+alt+delete一、按一下键盘上的win键,然后再按一下键盘上的右箭头(win7或者win8以上系统可能要按2下右箭头键),这个时候就会弹出关机选择菜单,接下来只要回车就可以强制关机了...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
