- 部分 I. Python 入门
- 第 1 章 Python 入门
- 第 2 章 Python Package Index (PyPI)
- 第 3 章 Python 模块
- 第 4 章 数据类型
- 第 5 章 数据结构
- 第 6 章 Class
- 第 7 章 Input/Output
- 第 8 章 Pipe
- 第 9 章 Library
- 9.2. 随机数
- 9.3. Python 多线程
- 9.13. syslog
- 9.5. Socket
- 9.6. subprocess
- 9.7. YAML
- 9.8. Daemon
- 9.9. python-memcached
- 9.10. Pyro - Pyro is short for PYthon Remote Objects
- 9.11. Python Imaging Library
- 9.12. getopt – Command line option parsing
- 9.14. python-subversion
- 9.15. SimpleHTTPServer
- 9.16. fuse-python.x86_64 : Python bindings for FUSE - filesystem in userspace
- 9.17. Network
- 9.18. Python-spdylay - Spdylay Python Extension Module
- 9.19. mechanize
- 9.20. Dominate
- 第 10 章 Frameworks
- 第 12 章 终端环境开发
- 部分 II. Python 数据分析
- 第 13 章 Crawler
- 第 14 章 Scrapy - Python web scraping and crawling framework
- 第 15 章 Pandas - Python Data Analysis Library
- 第 16 章 股票
- 第 17 章 数据可视化
- 部分 III. 人工智能 AI
- 第 18 章 OCR
- 第 19 章 语音处理
- 第 20 章 视频
- 第 21 章 人脸识别
- 第 22 章 自然语言处理
- 第 23 章 自动化运维
- 第 24 章 办公自动化
- 第 25 章 OpenCV
- 第 26 章 图形开发
- 第 27 章 3rdparty toolkit
- 第 29 章 实用代码
- 第 30 章 FAQ
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
12.3. texttable - module for creating simple ASCII tables
12.3. texttable - module for creating simple ASCII tables
https://github.com/foutaise/texttable/
pip install texttable
程序演示
from texttable import Texttable table = Texttable() table.add_rows([["Name", "Age", "Nickname"], ["Neo", 35, "netkiller"], ["李磊", 23, "Lee"], ["韩美美", 28, "May"]]) print(table.draw())
+--------+-----+-----------+ | Name | Age | Nickname | +========+=====+===========+ | Neo | 35 | netkiller | +--------+-----+-----------+ | 李磊 | 23 | Lee | +--------+-----+-----------+ | 韩美美 | 28 | May | +--------+-----+-----------+
12.3.1. 对齐设置
set_header_align(self, array) 设置水平对齐
- l 表示左对齐
- r 表示右对齐
- c 表示居中对齐
set_cols_align(self, array) 设置水平对齐
- l 表示左对齐
- r 表示右对齐
- c 表示居中对齐
set_cols_valign(self, array) 设置垂直对齐
- t 表示顶部对齐
- m 表示中间对齐
- b 表示底部对齐
from texttable import Texttable table = Texttable() table.set_cols_align(["l", "r", "c"]) table.set_cols_valign(["t", "m", "b"]) table.add_rows([["Name", "Age", "Nickname"], ["Mr\nXavier\nHuon", 32, "Xav'"], ["Mr\nBaptiste\nClement", 1, "Baby"], ["Mme\nLouise\nBourgeau", 28, "Lou\n\nLoue"]]) print(table.draw()) print()
输出结果
+----------+-----+----------+ | Name | Age | Nickname | +==========+=====+==========+ | Mr | | | | Xavier | 32 | | | Huon | | Xav' | +----------+-----+----------+ | Mr | | | | Baptiste | 1 | | | Clement | | Baby | +----------+-----+----------+ | Mme | | Lou | | Louise | 28 | | | Bourgeau | | Loue | +----------+-----+----------+
12.3.2. 设置表格风格
from texttable import Texttable table = Texttable() for header in (Texttable.BORDER, Texttable.HEADER, Texttable.HLINES, Texttable.VLINES): table.set_deco(header) table.set_cols_align(["l", "r", "c"]) table.set_cols_valign(["t", "m", "b"]) table.add_rows([["Name", "Age", "Nickname"], ["Neo", 35, "netkiller"], ["李磊", 23, "Lee"], ["韩美美", 28, "May"]]) print(table.draw()) print("\n\n")
输出结果
+--------------------------+ | Name Age Nickname | | Neo 35 netkiller | | 李磊 23 Lee | | 韩美美 28 May | +--------------------------+ Name Age Nickname ======================== Neo 35 netkiller 李磊 23 Lee 韩美美 28 May Neo 35 netkiller 李磊 23 Lee 韩美美 28 May Name Age Nickname Neo 35 netkiller +--------------------------+ 李磊 23 Lee +--------------------------+ 韩美美 28 May +--------------------------+ Neo 35 netkiller +--------------------------+ 李磊 23 Lee +--------------------------+ 韩美美 28 May +--------------------------+ Neo 35 netkiller +--------------------------+ 李磊 23 Lee +--------------------------+ 韩美美 28 May Name | Age | Nickname Neo | 35 | netkiller 李磊 | 23 | Lee 韩美美 | 28 | May Neo | 35 | netkiller 李磊 | 23 | Lee 韩美美 | 28 | May Neo | 35 | netkiller 李磊 | 23 | Lee 韩美美 | 28 | May Neo | 35 | netkiller 李磊 | 23 | Lee 韩美美 | 28 | May
12.3.3. 自定义风格
自定义行列线条字符
set_chars(self, array) | Set the characters used to draw lines between rows and columns | | - the array should contain 4 fields: | | [horizontal, vertical, corner, header] | | - default is set to: | | ['-', '|', '+', '=']
set_chars(self, array) 数字的四个参数分别是:
- horizontal 水平画线字符
- vertical 垂直画线字符
- corner 转角画线字符
- header 表头画线字符
默认是 ['-', '|', '+', '=']
下面这段代码模仿 MySQL 终端输出样式
table = Texttable() table.set_cols_align(["r", "l", "c", "l", "l"]) table.set_cols_valign(["m", "m", "m", "m", "m"]) table.set_chars(['-', '|', '+', '-']) table.set_cols_dtype(['i', 't', 'i', 't', 'a']) table.add_rows([["id", "name", "age", "nickname", "ctime"], [1, "Neo", 35, "netkiller", "2021-05-16 10:14:00"], [2, "Tom", 23, "Lee", "2021-05-16 10:14:00"], [3, "Jerry", 28, "May", "2021-05-16 10:14:00"]]) print(table.draw()) print()
+----+-------+-----+-----------+---------------------+ | id | name | age | nickname | ctime | +----+-------+-----+-----------+---------------------+ | 1 | Neo | 35 | netkiller | 2021-05-16 10:14:00 | +----+-------+-----+-----------+---------------------+ | 2 | Tom | 23 | Lee | 2021-05-16 10:14:00 | +----+-------+-----+-----------+---------------------+ | 3 | Jerry | 28 | May | 2021-05-16 10:14:00 | +----+-------+-----+-----------+---------------------+
怎么样,似曾相识吧?跟 mysql 命令中输出结果一致。
12.3.4. 设置列数据类型
from texttable import Texttable table = Texttable() table.set_deco(Texttable.HEADER) table.set_cols_dtype(['t', # text 'f', # float (decimal) 'e', # float (exponent) 'i', # integer 'a']) # automatic table.set_cols_align(["l", "r", "r", "r", "l"]) table.add_rows([["text", "float", "exp", "int", "auto"], ["abcd", "67", 654, 89, 128.001], ["efghijk", 67.5434, .654, 89.6, 12800000000000000000000.00023], ["lmn", 5e-78, 5e-78, 89.4, .000000000000128], ["opqrstu", .023, 5e+78, 92., 12800000000000000000000]]) print(table.draw())
输出结果
text float exp int auto ============================================== abcd 67.000 6.540e+02 89 128.001 efghijk 67.543 6.540e-01 90 1.280e+22 lmn 0.000 5.000e-78 89 0.000 opqrstu 0.023 5.000e+78 92 1.280e+22
12.3.5. 彩色表格
texttable 本身不支持 ANSI 彩色文本输出,我以修复了该 Bug,已经想修复代码pull request 给作者。
Pull Request: https://github.com/foutaise/texttable/pull/75
我的代码库地址: https://github.com/netkiller/texttable
from texttable import Texttable from colorama import Fore, Back, Style, init table = Texttable() table.set_chars(['-', '|', '+', '-']) # table.set_cols_width([8, 5, 19]) table.add_rows([["Name", "Age", "Nickname"], ["Neo", 35, Fore.RED+"netkiller"+Fore.RESET], ["李磊", 23, Fore.GREEN+"Lee"+Fore.RESET], ["韩美美", 28, Fore.BLUE+"May"+Fore.RESET]]) print(table.draw())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论