首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python3之PrettyTable模块(美化库)

Python3之PrettyTable模块(美化库)

作者头像
周小董
发布于 2019-03-25 03:24:26
发布于 2019-03-25 03:24:26
2.2K00
代码可运行
举报
文章被收录于专栏:python前行者python前行者
运行总次数:0
代码可运行

安装:pip install PrettyTable

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-
from prettytable import PrettyTable

x = PrettyTable(field_names=["name", "age", "sex", "money"])
x.align["name"] = "l"  # 以name字段左对齐
x.padding_width = 1   # 填充宽度
x.add_row(["wang",20, "man", 1000])
x.add_row(["alex",21, "man", 2000])
x.add_row(["peiqi",22, "man", 3000])
# print(x)
#表排序
print(x.get_string(sortby="money", reversesort=True))
#自带样式打印,参数还可以选择“DEFAULT”、“PLAIN_COLUMNS”
# print(x.set_style(MSWORD_FRIENDLY))
'''
+-------+-----+-----+-------+
|  name | age | sex | money |
+-------+-----+-----+-------+
|  wang |  20 | man |  1000 |
|  alex |  21 | man |  2000 |
| peiqi |  22 | man |  3000 |
+-------+-----+-----+-------+
'''

from prettytable import PrettyTable

pt = PrettyTable()
pt.field_names = [i for i in range(1, 10)]
mulp = [["{b}x{a}={c}".format(a=a, b=b, c=a * b) if a >= b else "" for b in range(1, 10)] for a in range(1, 10)]
for mu in mulp: pt.add_row(mu)
print(pt)
'''
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
|   1   |   2    |   3    |   4    |   5    |   6    |   7    |   8    |   9    |
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
| 1x1=1 |        |        |        |        |        |        |        |        |
| 1x2=2 | 2x2=4  |        |        |        |        |        |        |        |
| 1x3=3 | 2x3=6  | 3x3=9  |        |        |        |        |        |        |
| 1x4=4 | 2x4=8  | 3x4=12 | 4x4=16 |        |        |        |        |        |
| 1x5=5 | 2x5=10 | 3x5=15 | 4x5=20 | 5x5=25 |        |        |        |        |
| 1x6=6 | 2x6=12 | 3x6=18 | 4x6=24 | 5x6=30 | 6x6=36 |        |        |        |
| 1x7=7 | 2x7=14 | 3x7=21 | 4x7=28 | 5x7=35 | 6x7=42 | 7x7=49 |        |        |
| 1x8=8 | 2x8=16 | 3x8=24 | 4x8=32 | 5x8=40 | 6x8=48 | 7x8=56 | 8x8=64 |        |
| 1x9=9 | 2x9=18 | 3x9=27 | 4x9=36 | 5x9=45 | 6x9=54 | 7x9=63 | 8x9=72 | 9x9=81 |
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
'''

#一行打印九九乘法表
print ('\n'.join([' '.join(['%s*%s=%-2s' % (j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
'''
1*1=1 
1*2=2  2*2=4 
1*3=3  2*3=6  3*3=9 
1*4=4  2*4=8  3*4=12 4*4=16
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
'''

创建表

直接创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pt = PrettyTable()

从已有文件创建

  • CSV
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from prettytable import from_csv 
fp = open("mytable.csv", "r") 
pt = from_csv(fp) 
fp.close()
  • HTML
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from prettytable import from_html 
pts = from_html(html_string)
  • SQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from prettytable import from_db_cursor 
db_cur.execute("SELECT * FROM mytable") 
pt = from_db_cursor(db_cur)

添加元素

  • 按行添加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pt.add_row()
  • 按列添加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pt.add_column()

输出格式

ASCII码表

  • 直接输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(pt)
  • 无表格框输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(pt.get_string())
  • HTML表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(pt.get_html_string())
  • 选择子表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(pt.get_string(fields = ["City name", "Population"]))
  • 输出前4列
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(pt.get_string(start = 0, end = 3))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_table = old_table[0:3]
print(new_table)
  • 表排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(x.get_string(sortby="Annual Rainfall", reversesort=True))

控制表样式

  • 自带样式
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#参数还可以选择“DEFAULT”、“PLAIN_COLUMNS”
from prettytable import MSWORD_FRIENDLY
x.set_style(MSWORD_FRIENDLY) 
print(x)
手动控制样式
  • 可调整选项

摘自prettytable文档

  • border - 布尔类型参数(必须是True或False)。控制表格边框是否显示。
  • header - 布尔类型参数(必须是True或False)。控制表格第一行是否作为表头显示。
  • header-style - 控制表头信息的大小写。允许的参数值:“cap”(每个单词首字母大写),“title”(除了介词助词首字母大写),“lower”(全部小写)或者None(不改变原内容格式)。默认参数为None。
  • hrules - 设置表格内部水平边线。允许的参数值:FRAME,ALL,NONE。注意这些是在prettytable模块内部定义的变量,在使用之前导入或用类似prettytable.FRAME的方法调用。
  • vrules - 设置表格内部竖直边线。允许的参数值:FRAME,ALL,NONE。
  • align - 水平对齐方式(None,“l”(左对齐),“c”(居中),“r”右对齐)
  • valign - 垂直对齐方式(None,“t”(顶部对齐),“m”(居中),“b”底部对齐)
  • int_format - 控制整型数据的格式。
  • float_format - 控制浮点型数据的格式。
  • padding_width - 列数据左右的空格数量。(当左右padding未设置时生效)
  • left_padding_width - 列数据左侧的空格数量。
  • right_padding_width - 列数据右侧的空格数量。
  • vertical_char - 绘制竖直边线的字符,默认为“|”
  • horizontal_char - 绘制水平边线的字符,默认为“-”
  • junction_char - 绘制水平竖直交汇点的字符,默认为“+”

两种设置方式等效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = PrettyTable() 
x.border = False 
x.header = False 
x.padding_width = 5

or 

x = PrettyTable(border=False, header=False, padding_width=5)
  • 调整对齐方式的几种方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(x.get_string(align="l"))

x.align["City name"] = "l" 
x.align["Population"] = "c" 
x.align["Area"] = "r"

x.align = "l'
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-
import requests
import re
import argparse
from bs4 import BeautifulSoup
from prettytable import PrettyTable

parser = argparse.ArgumentParser()
parser.add_argument('-c', '--city', default='hangzhou')
args = parser.parse_args()
city = args.city

url = 'http://weather.sina.com.cn/' + city
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')

city = soup.find(class_='slider_ct_name').string
date = []
weather = []
temperature = []

pt = PrettyTable(['date', 'daytime', 'night', 'tempeature'])
pt.align['date'] = '1'
# get date
for item in soup('p', class_='wt_fc_c0_i_date'):
    date.append(bytes.decode(item.string.encode('utf-8')))
# get weather
for item in soup("img", {"class": 'icons0_wt'}):
    weather.append(bytes.decode(item['alt'].encode('utf-8')))
# get temperature
for item in soup('p', class_='wt_fc_c0_i_temp'):
    temperature.append(bytes.decode(item.string.encode('utf-8')))

# make table
for counter in range(7):
    currow = []
    currow.append(date[counter])
    currow.append(weather[2 * counter])
    currow.append(weather[2 * counter + 1])
    currow.append(temperature[counter])
    pt.add_row(currow)
print(pt)
filename = city + '7日天气' + '.txt'
with open(filename, 'w') as fp:
    fp.write('\t\t\t' + city + '7日天气\n')
    fp.write(str(pt))

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-------+---------+-------+-------------+
|  date | daytime | night |  tempeature |
+-------+---------+-------+-------------+
| 08-06 ||| 37°C / 27°C |
| 08-07 |   多云  || 36°C / 27°C |
| 08-08 |   多云  || 35°C / 26°C |
| 08-09 ||| 36°C / 27°C |
| 08-10 ||  多云 | 37°C / 27°C |
| 08-11 |   多云  |  多云 | 36°C / 27°C |
| 08-12 |   多云  |  多云 | 36°C / 27°C |
+-------+---------+-------+-------------+

参考:https://blog.csdn.net/u013630675/article/details/78773356

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
RTC风向标:11月最值得关注的26个热点!
近年来,实时音视频快速发展,WebRTC作为实时音视频的标准也快速发展,从直播到通讯,其应用场景也在不断丰富。如果您关注实时音视频方向的技术产品应用与创新,本系列文章就将会为您分享音视频方向的技术产品动态,助您第一时间获取业界信息。本文将为你快速解析近期值得关注的技术、产品与行业热点。 一、腾讯会议发布3.0版本 11月4日,2021腾讯数字生态大会上发布了腾讯会议3.0版本,下面就分享几个小点。 (一)降低人们达成共识的成本是腾讯会议的定位,产品设计围绕产品定位 这个点深有感触,人们往往会说小团
腾讯云开发者
2021/11/26
2.1K0
ClubHouse 上线支持Replay功能;WebOBS直播推流工具要流行起来了 |W
作为最火的音频直播产品ClobHouse依旧保持比较快的迭代能力, 最近支持 Replay能力, 说的通俗一点就是支持直播的回放能力。ClobHouse在回放的能力之上又做了一些创新,可以让房间创建者在直播结束之后看到谁在听一个房间的回放,还可以让他们与其他没有实时收听的用户联系。回放能力虽然已经被应用的很多,但我比较好奇的是如果支持了回放能力就跟以前的博客有什么区别呢?这个问题可以延伸到直播和短视频的对比上,直播的创作成本很低,短视频的创作成本较高,但单位时间内信息密度明显直播小于短视频很多,目前短视频的消耗时长也明显高于直播。
刘连响
2021/11/17
1.1K0
新知 | RT-ONE™&TRTC赋能实时音视频场景创新
今年腾讯云音视频发布了“三合一”的RT-ONE™网络。该网络整合了腾讯云实时通信网络(TRTC)、即时通信网络(IM)以及流媒体分发网络(CDN)三张网络,为业界最完整的音视频通信PaaS平台构建基座,面向教育、零售、泛娱乐等行业需求提供服务。本次新知系列的第一堂课,我们邀请到了腾讯云音视频的技术导师 —— 刘连响,为大家详解RT-ONE™并分享RT-ONE™&TRTC赋能实时音视频场景的一些创新。 接下来的5周,每周四晚上7:30,我们都会在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云
腾讯云音视频
2021/11/22
2.3K6
Zoom支持自动生成字幕;SharePlay上线;Safari 更新导致大量bug |WebRTC风向
自动生成字幕难度不低,但国民级应用Zoom把这一功能拿来了;在iOS 15.0 Safari的更新中,增加了很多WebRTC相关的特性,你想了解吗?相关信息,尽在文中。
刘连响
2021/11/17
1.5K0
拿下公司技术突破奖,腾讯 RTC 实时音视频技术内幕揭秘!
近些年来,随着移动宽带的不断提速,音视频应用的受欢迎程度也越来越高。尤其受上半年疫情的影响,更多原本线下的业务也被迫搬到了线上,这就更进一步的推动了以低延时见长的实时音视频产品的快速增长,腾讯实时音视频(Tencent-RTC,下文简称为 TRTC)正是在这个大背景下取得了新一轮的技术突破,并因此获得了腾讯公司级技术突破奖的。 本文将围绕三个主要的技术突破点,对该项目的阶段性成绩和其中涉及的技术细节进行一个全面的描述和总结。 什么是RTC? RTC 是 Real Time Communication 的英
腾讯即时通信IM
2020/11/03
3.2K0
2023年WebRTC趋势:黄金时代不在
 点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 编者按:随着疫情防控全面放开,混合办公成为主流的协作方式,WebRTC作为主流的RTC基础技术自然也受到影响。在2023年,WebRTC代表的RTC技术会有怎样的剧本?本文来自Tsahi Levent-Levi,LiveVideoStack已获转载授权。 原文 / https://bloggeek.me/webrtc-predictions-2023/ 文 / Tsahi Levent-Lev
LiveVideoStack
2023/02/23
1.9K0
2023年WebRTC趋势:黄金时代不在
你未必知道的 WebRTC – 前世、今生、未来
如果你是一位工程师,想必听过 WebRTC,就算没有开发过;如果你是一位互联网用户,大概率使用过 WebRTC,虽然可能没有意识到。在这个视频为王的时代,我们漫谈一下这个技术的来龙去脉以及一些有趣的应用。
凡泰极客
2021/10/29
8840
你未必知道的 WebRTC – 前世、今生、未来
奇葩说之RTC的那些事
大家好,我是来自拍乐云的赵加雨。首先做个简单的自我介绍,我2003年加入WebEx,在WebEx工作了14年,前面几年是在国内工作,后面几年在美国。在美国工作几年之后,发觉中国的环境也不错,于是在2017年回国加入了网易,任网易云信CTO,直到去年创立了拍乐云。大家可以看到,虽然我现在的头衔是CEO,但我过去的经历一直都是在做技术,现在在公司里和小伙伴们也会经常讨论技术,对技术也一直保留着很多热情。
LiveVideoStack
2020/11/19
7230
WebTransport 与 WebCodecs 初探
WebTransport 是WebRTC体系下的一套浏览器API,提供低延迟,client和server之间双向通信的能力。 核心的能力点包括:
刘连响
2022/03/30
1.7K0
AV1,实时编码READY
一款编码器的成功,不仅需要大量的金钱,还需要耐心。AV1定稿三年后,是时候为它庆祝了。
全栈程序员站长
2022/09/30
1K0
AV1,实时编码READY
播放器技术演进与探索,Web开播系统的技术演进,大屏终端音视频播放,音视频效果插件开放平台建设
播放器技术演进与探索 Topic 《QPlayer2播放器—用扩展性支撑起未来需求》 陈军奇  七牛云 资深开发工程师、播放器负责人 随着这些年音视频的应用场景越来越丰富,用户对于播放器能力要求也变得越来越多样。作为一站式智能视频云平台,七牛云始终致力于为客户提供一款能够满足各类诉求的播放器,这也是七牛云音视频解决方案中的重要一环。 本次分享将分为三个部分:第一部分将围绕七牛云点播直播解决方案的用户诉求进行全面剖析;第二部分将具体介绍七牛云从 Qplayer1 到 Qplayer2 的技术演进,以及 Qp
LiveVideoStack
2023/04/04
6010
播放器技术演进与探索,Web开播系统的技术演进,大屏终端音视频播放,音视频效果插件开放平台建设
奇葩说之RTC的那些事
大家好,我是来自拍乐云的赵加雨。首先做个简单的自我介绍,我2003年加入WebEx,在WebEx工作了14年,前面几年是在国内工作,后面几年在美国。在美国工作几年之后,发觉中国的环境也不错,于是在2017年回国加入了网易,任网易云信CTO,直到去年创立了拍乐云。大家可以看到,虽然我现在的头衔是CEO,但我过去的经历一直都是在做技术,现在在公司里和小伙伴们也会经常讨论技术,对技术也一直保留着很多热情。
LiveVideoStack
2020/11/17
4470
干货|一文读懂腾讯会议在复杂网络下如何保证高清音频
导读 | 一场突如其来的疫情,让数以亿计的白领只能居家办公,云视频会议系统突然成为最重要的办公软件。腾讯会议在2019年12月25日正式上线后,短短两个月时间内积累千万日活。除了时机,腾讯会议产品又为什么能脱颖而出呢?产品力是个不得不提的因素,腾讯多媒体实验室高级研究员王晓海在【腾讯技术开放日·云视频会议专场】中,对腾讯会议在复杂网络情况下如何保证高清音质进行了分享。 点击视频,查看直播回放 一、VoIP和PSTN的前世今生 PSTN(PublicSwitch Telephone Network公共交
腾讯多媒体实验室
2020/04/13
4.2K1
WebRTC 的未来
IETF 首先做的工作是开发了 NICER。NICER 是一种在一次对话中切换 4G 和 wifi 的一种方法,这给 WebRTC 增加了一个新功能。
用户1324186
2022/05/25
1.3K0
WebRTC 的未来
刚刚,钉钉宣布买下拍乐云
机器之心报道 编辑:泽南 为了这个编解码技术,阿里买下了一家创业公司。 钉钉又出手了。 3 月 18 日,资本市场传来一则重磅消息:钉钉已完成对音视频平台服务公司拍乐云的全资收购,拍乐云核心团队整体加入钉钉,创始人赵加雨还将担任钉钉音视频事业部一号位。 拍乐云 CEO,现任钉钉音视频事业部负责人赵加雨。 「钉钉与拍乐云团队的融合,将对钉钉音视频的产品技术能力形成有力补充。钉钉将持续加大音视频投入,提升用户体验。同时,钉钉音视频事业部将聚焦能力开放,将产品技术向生态开放,为软硬件伙伴带来更具竞争力的产品。」
机器之心
2022/03/21
8380
了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化
有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年,这并非没有根据。就在去年(2017年),WebRTC 1.0 标准草案出炉(实际上WebRTC标准草案的早期版本早在2011年就已经发布,WebRTC并非一夜之间就出现的技术),并将于今年正式发布。与此同时,越来越多的浏览器和厂商都开始对它进行广泛的支持,WebRTC 即将成为互联网的基础设施了,或许门槛如此之高的实时音视频技术终有白菜化的那一天。
JackJiang
2018/08/29
3K0
如何在FreeSWITCH中对接SRS
SRS是一个简单、高效的优秀的开源实时音视频服务器,支持 RTMP/WebRTC/HLS/HTTP-FLV/SRT/MPEG-DASH/GB28181、Linux/Windows/macOS、X86_64/ARMv7/AARCH64/M1/RISCV/LOONGARCH/MIPS 等协议和技术。
杜金房
2023/09/03
1.6K1
如何在FreeSWITCH中对接SRS
基于WebAssembly构建Web端音视频通话引擎
大家好,我叫田建华。今天分享的主题是基于WebAssembly构建Web端音视频通话引擎。今天将从背景、WebAssembly引擎、方案落地和问题及展望四个方面展开介绍。
腾讯云音视频
2023/07/27
7720
基于WebAssembly构建Web端音视频通话引擎
2022 WebRTC发展趋势分析
本篇为WebRTC技术专家Tsahi Levent-Levi发布在BlogGeek.me上的文章,我们翻译了其中部分内容发布在LiveVideoStack的公众号上。感谢Tsahi的授权。
LiveVideoStack
2022/02/11
1.6K0
2022 WebRTC发展趋势分析
解析腾讯云音视频通信三大核心网络技术实战与创新
随着互联网的发展越来越成熟,移动终端成为我们人手必备的生活用品,云计算的普及与高速发展,4G、5G网络的瓜熟蒂落,我们真正的进入了全真互联网时代。2020年,一场突如其来的疫情,很多传统行业不得不将线下业务转移到线上,疫情催生了更多的线上沟通需求,因此,我们也面临着一个巨大的挑战,线下全真的体验如何在线上得到很好的解决。 得益于云计算、音视频、通信技术的发展,企业和开发者可以快速地将线下业务搬到线上,4月16日 | 上海,LiveVideoStack联合腾讯云共邀5位技术大咖,解析腾讯云构成全真
腾讯云音视频
2021/03/22
1.4K0
推荐阅读
相关推荐
RTC风向标:11月最值得关注的26个热点!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档