漂亮的输出-----prettytable和colorama的使用
Python通过prettytable模块将输出内容如表格方式整齐输出,python本身并不内置,需要独立安装该第三方库。
1 pip install PrettyTable
1 #源码安装
2 wget https://pypi.python.org/packages/source/P/PrettyTable/prettytable-0.7.2.tar.gz
3 tar -zxvf prettytable-0.7.2.tar.gz
4 python setup.py build
5 python setup.py install
import prettytable as pt
## 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
tb.add_row(["Adelaide",1295, 1158259, 600.5])
tb.add_row(["Brisbane",5905, 1857594, 1146.4])
tb.add_row(["Darwin", 112, 120900, 1714.7])
tb.add_row(["Hobart", 1357, 205556,619.5])
print(tb)+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+## 按列添加数据
tb.add_column('index',[1,2,3,4])
print(tb)+-----------+------+------------+-----------------+-------+
| City name | Area | Population | Annual Rainfall | index |
+-----------+------+------------+-----------------+-------+
|  Adelaide | 1295 |  1158259   |      600.5      |   1   |
|  Brisbane | 5905 |  1857594   |      1146.4     |   2   |
|   Darwin  | 112  |   120900   |      1714.7     |   3   |
|   Hobart  | 1357 |   205556   |      619.5      |   4   |
+-----------+------+------------+-----------------+-------+## 使用不同的输出风格
tb.set_style(pt.MSWORD_FRIENDLY)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.PLAIN_COLUMNS)
print('--- style:PLAIN_COLUMNS -----')
print(tb)
## 随机风格,每次不同
tb.set_style(pt.RANDOM)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.DEFAULT)
print('--- style:DEFAULT -----')
print(tb)--- style:MSWORD_FRIENDLY -----
| City name | Area | Population | Annual Rainfall |
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
--- style:PLAIN_COLUMNS -----
City name        Area        Population        Annual Rainfall
 Adelaide        1295         1158259               600.5
 Brisbane        5905         1857594               1146.4
  Darwin         112           120900               1714.7
  Hobart         1357          205556               619.5
--- style:MSWORD_FRIENDLY -----
@    Adelaide     1295     1158259     600.5 @
@    Brisbane     5905     1857594     1146.4@
@     Darwin      112       120900     1714.7@
@     Hobart      1357      205556     619.5 @
--- style:DEFAULT -----
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+## 不打印,获取表格字符串
s = tb.get_string()
print(s)
## 可以只获取指定列或行
s = tb.get_string(fields=["City name", "Population"],start=1,end=4)
print(s)+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+
+-----------+------------+
| City name | Population |
+-----------+------------+
|  Brisbane |  1857594   |
|   Darwin  |   120900   |
|   Hobart  |   205556   |
+-----------+------------+## 自定义表格输出样式
### 设定左对齐
tb.align = 'l'
### 设定数字输出格式
tb.float_format = "2.2"
### 设定边框连接符为'*"
tb.junction_char = "*"
### 设定排序方式
tb.sortby = "City name"
### 设定左侧不填充空白字符
tb.left_padding_width = 0
print(tb)*----------*-----*-----------*----------------*
|City name |Area |Population |Annual Rainfall |
*----------*-----*-----------*----------------*
|Adelaide  |1295 |1158259    |600.50          |
|Brisbane  |5905 |1857594    |1146.40         |
|Darwin    |112  |120900     |1714.70         |
|Hobart    |1357 |205556     |619.50          |
*----------*-----*-----------*----------------*## 不显示边框
tb.border = 0
print(tb)
## 修改边框分隔符
tb.set_style(pt.DEFAULT)
tb.horizontal_char = '+'
print(tb)City name Area Population Annual Rainfall
Adelaide  1295 1158259    600.50
Brisbane  5905 1857594    1146.40
Darwin    112  120900     1714.70
Hobart    1357 205556     619.50
+++++++++++++++++++++++++++++++++++++++++++++++++++
| City name | Area | Population | Annual Rainfall |
+++++++++++++++++++++++++++++++++++++++++++++++++++
| Adelaide  | 1295 | 1158259    | 600.50          |
| Brisbane  | 5905 | 1857594    | 1146.40         |
| Darwin    | 112  | 120900     | 1714.70         |
| Hobart    | 1357 | 205556     | 619.50          |
+++++++++++++++++++++++++++++++++++++++++++++++++++## prettytable也支持输出HTML代码
s = tb.get_html_string()
print(s)colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,可以跨平台使用。
1. 安装colorama模块
| 1 | pip install colorama | 
可用格式常数:
| 1 2 3 | Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.Style: DIM, NORMAL, BRIGHT, RESET_ALL | 
colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,可以跨平台使用,在windows下linux下都工作良好,如果你想让控制台的输出信息更漂亮一些,可以使用给这个模块。 
colorama官方地址:https://pypi.python.org/pypi/colorama
安装colorama模块
pip install colorama
使用范例
from colorama import init,Fore init(autoreset=True) #通过使用autoreset参数可以让变色效果只对当前输出起作用,输出完成后颜色恢复默认设置 print(Fore.RED + 'welcome to www.jb51.net') print('automatically back to default color again')
这段代码可以将 welcome to www.jb51.net 字符串以红色输出到控制台
创建一个专门用于更改颜色的类Colored并且添加相应方法:
from colorama import init, Fore, Back, Style
init(autoreset=False)
class Colored(object):
    #  前景色:红色  背景色:默认
    def red(self, s):
        return Fore.LIGHTRED_EX + s + Fore.RESET
    #  前景色:绿色  背景色:默认
    def green(self, s):
        return Fore.LIGHTGREEN_EX + s + Fore.RESET
    def yellow(self, s):
        return Fore.LIGHTYELLOW_EX + s + Fore.RESET
    def white(self,s):
        return Fore.LIGHTWHITE_EX + s + Fore.RESET
    def blue(self,s):
        return Fore.LIGHTBLUE_EX + s + Fore.RESET- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
现在我们使用这个类: 
修改resolveData()函数的部分代码:
def resolveData():
    #查询链接
    url = 'https://kyfw.12306.cn/otn/leftTicket/queryO?leftTicketDTO.train_date=2018-01-31&leftTicketDTO.from_station=XAY&leftTicketDTO.to_station=GZG&purpose_codes=ADULT'    #获取数据
    while 1:
        try:
            data = getData(url)
            lists = json.loads(data)["data"]["result"]
            break
        except:
            continue
    cont = []
    name = [
        "station_train_code",
        "from_station_name",
        'start_time',
        "lishi",
        "swz_num",
        "zy_num",
        "ze_num",
        "gr_num",
        "rw_num",
        "dw_num",
        "yw_num",
        "rz_num",
        "yz_num",
        "wz_num",
        "qt_num",
        "note_num"
    ]
    color = Colored()#创建Colored对象
    for items in lists:#遍历result的每一项
        #data字典用于存放每一车次的余票信息
        data = {
            "station_train_code": '',
            "from_station_name": '',
            "to_station_name": '',
            'start_time': '',
            'end': '',
            "lishi": '',
            "swz_num": '',
            "zy_num": '',
            "ze_num": '',
            "dw_num": '',
            "gr_num": '',
            "rw_num": '',
            "yw_num": '',
            "rz_num": '',
            "yz_num": '',
            "wz_num": '',
            "qt_num": '',
            "note_num": ''
        }
        item = items.split('|')#用"|"进行分割
        data['station_train_code'] = item[3]#车次在3号位置
        data['from_station_name'] = item[6]#始发站信息在6号位置
        data['to_station_name'] = item[7]#终点站信息在7号位置
        data['start_time'] = item[8]#出发时间信息在8号位置
        data['arrive_time'] = item[9]#抵达时间在9号位置
        data['lishi'] = item[10]#经历时间在10号位置
        data['swz_num'] = item[32] or item[25]# 特别注意:商务座在32或25位置
        data['zy_num'] = item[31]#一等座信息在31号位置
        data['ze_num'] = item[30]#二等座信息在30号位置
        data['gr_num'] = item[21]#高级软卧信息在31号位置
        data['rw_num'] = item[23]#软卧信息在23号位置
        data['dw_num'] = item[27]#动卧信息在27号位置
        data['yw_num'] = item[28]#硬卧信息在28号位置
        data['rz_num'] = item[24]#软座信息在24号位置
        data['yz_num'] = item[29]#硬座信息在29号位置
        data['wz_num'] = item[26]#无座信息在26号位置
        data['qt_num'] = item[22]#其他信息在22号位置
        if item[0] == 'null':
            data['note_num'] = item[1]
        else:
            data['note_num'] = color.white(item[1])#加高亮白色
            #如果没有信息则用“-”代替
        for pos in name:
            if data[pos] == '':
                data[pos] = '-'
        cont.append(data)
    tickets = []#存放所有车次的余票信息
    #格式化添加进tickets中
    for x in cont:
        tmp = []
        for y in name:
            if y == "from_station_name":
                s = color.green(stations2CN[x[y]]) + '\n' + color.red(stations2CN[x["to_station_name"]])#始发站绿色,终点站红色
                tmp.append(s)
            elif y == "start_time":
                s = color.green(x[y]) + '\n' + color.red(x["arrive_time"])
                tmp.append(s)
            elif y == "station_train_code":
                s = color.yellow(x[y])
                tmp.append(s)
            else:
                tmp.append(x[y])
        tickets.append(tmp)
    return tickets#返回所有车次余票信息测试结果: 
漂亮的输出-----prettytable和colorama的使用的更多相关文章
- 一个漂亮的输出MySql数据库表结构的PHP页面
		经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这 ... 
- python改变输出字体颜色==>colorama
		colorama是python第三方库中一个可以改变输出流颜色的玩意儿, 安装可以通过: pip install colorama 简单介绍 from colorama import Fore, Ba ... 
- Python 输出漂亮的表格的5个案例,实用方便
		文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:程序IT圈 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ... 
- Python3实现火车票查询工具
		Python 实现火车票查询工具 一. 实验介绍 通过python3实现一个简单的命令行版本的火车票查询工具,用实际中的例子会更感兴趣,不管怎么样,既练习了又可以自己使用. 1. 知识点: Pyth ... 
- Python 实现火车票查询工具
		注意:由于 12306 的接口经常变化,课程内容可能很快过期,如果遇到接口问题,需要根据最新的接口对代码进行适当修改才可以完成实验. 一.实验简介 当你想查询一下火车票信息的时候,你还在上 12306 ... 
- MongoDB、MySQL
		我的电脑的系统Path: D:\sqlite;D:\Program Files\MongoDB\Server\3.4\bin;%MYSQL_HOME%\bin;D:\Program Files\B ... 
- Python 实现的 12306抢票脚本
		Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤:- 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等).- 建立模拟浏览器 ... 
- Python常用的标准库以及第三方库有哪些?
		20个必不可少的Python库也是基本的第三方库 读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz ... 
- 20个必不可少的Python库也是基本的第三方库
		个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它. Scrapy. ... 
随机推荐
- [转]改变UITextField placeHolder颜色、字体
			本文转载至 http://m.blog.csdn.net/blog/a394318511/8025170 我们有时需要定制化UITextField对象的风格,可以添加许多不同的重写方法,来改变文本字段 ... 
- 创建4个线程,两个对j加一,两个对j减一(j两同两内)
			package multithread; public class MyThread { //j变量私有 private int j; //同步的+1方法 private synchronized v ... 
- ios笔试题(选择题)
			1-10 C语言 & 计算机基础 1.请看下面一段代码 static int a = 1; int main(){ int b = 2; char *c = NULL; c = (char * ... 
- Vue基础-渲染函数-父子组件-传递数据
			Vue 测试版本:Vue.js v2.5.13 做了个 demo,把父子组件的数据都绑定到 Vue 实例 app 上,注释中的 template 相对好理解些 <div id="app ... 
- nexus配置第三方库文件
			进入nexus管理界面 默认用户名密码:admin/admin123 在左侧Views/Repositories中选择Repositories,然后在右侧的面板中选择3rd party,在下方arti ... 
- Vue.js_getter and setter
			computed 计算属性: 1.get 读取 <div id="test2"> <input type="text" v-model=&qu ... 
- linux 定时备份mysql数据库
			首先要先搞清楚两个概念: ①.mysqldump,mysqldump是mysql的逻辑备份工具,它不是linux的命令,工作原理类似产生一些列sql语句,对数据库进行指定的逻辑备份. 最简洁的形式是: ... 
- Markdown安装与简单使用
			早就听过Markdown的大名了,说是最适合程序员的编辑器,一点也不为过.平时写文章,写博客.除了内容以外,还要被一堆繁琐的样式困扰,毕竟样式太难看,既是自己的文章,也会懒得看的.今天正好看到博客上面 ... 
- c 整数运算
			一.无符号加法(形式的模运算,无符号加法等价于计算模2w 的和) 示例:非负数 x 和 y 位数: w(8位机) 范围: 0 <= x,y <= 2w -1 结果:0 <= x+y ... 
- K-means聚类算法MATLAB
			以K-means算法为例,实现了如下功能 自动生成符合高斯分布的数据,函数名为gaussianSample.m 实现多次随机初始化聚类中心,以找到指定聚类数目的最优聚类.函数名myKmeans.m 自 ... 
