zoukankan      html  css  js  c++  java
  • python prettytable模块

    简介

    Python通过PrettyTable模块可以将输出内容如表格方式整齐地输出。

    安装

    pip install prettytable
    • 1

    示例

    from prettytable import PrettyTable
    table = PrettyTable(["animal", "ferocity"])
    table.add_row(["wolverine", 100])
    table.add_row(["grizzly", 87])
    table.add_row(["Rabbit of Caerbannog", 110])
    table.add_row(["cat", -1])
    table.add_row(["platypus", 23])
    table.add_row(["dolphin", 63])
    table.add_row(["albatross", 44])
    table.sort_key("ferocity")
    table.reversesort = True
    print(table)
    
    '''效果图
    +----------------------+----------+
    |        animal        | ferocity |
    +----------------------+----------+
    | Rabbit of Caerbannog |   110    |
    |      wolverine       |   100    |
    |       grizzly        |    87    |
    |       dolphin        |    63    |
    |      albatross       |    44    |
    |       platypus       |    23    |
    |         cat          |    -1    |
    +----------------------+----------+
    '''
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    使用

    创建表

    直接创建

    pt = PrettyTable()
    • 1

    从已有文件创建

    CSV
    from prettytable import from_csv 
    fp = open("mytable.csv", "r") 
    pt = from_csv(fp) 
    fp.close()
    • 1
    • 2
    • 3
    • 4
    HTML
    from prettytable import from_html 
    pts = from_html(html_string)
    • 1
    • 2
    SQL
    from prettytable import from_db_cursor 
    db_cur.execute("SELECT * FROM mytable") 
    pt = from_db_cursor(db_cur)
    • 1
    • 2
    • 3

    添加元素

    按行添加

    pt.add_row()
    • 1

    按列添加

    pt.add_column()
    • 1

    输出格式

    ASCII码表

    直接输出
    print(pt)
    • 1
    无表格框输出
    print(pt.get_string())
    • 1

    HTML表

    print(pt.get_html_string())
    • 1

    选择子表

    print(pt.get_string(fields = ["City name", "Population"]))
    • 1
    #输出前4列
    print(pt.get_string(start = 0, end = 3))
    • 1
    • 2
    new_table = old_table[0:3]
    print(new_table)
    • 1
    • 2

    表排序

    print x.get_string(sortby="Annual Rainfall", reversesort=True)
    • 1

    控制表样式

    自带样式

    #参数还可以选择“DEFAULT”、“PLAIN_COLUMNS”
    from prettytable import MSWORD_FRIENDLY
    x.set_style(MSWORD_FRIENDLY) 
    print(x)
    • 1
    • 2
    • 3
    • 4

    手动控制样式

    可调整选项

    摘自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 - 绘制水平竖直交汇点的字符,默认为“+”

    • border - A boolean option (must be True or False). Controls whether or not a border is drawn around the table.
    • header - A boolean option (must be True or False). Controls whether or not the first row of the table is a header showing the names of all the fields.
    • header_style - Controls capitalisation of field names in the header. Allowed values: “cap” (capitalise first letter of each word), “title” (title case), “upper” (all upper-case), “lower” (all lower-case) or None (don’t change from original field name setting). Default is None.
    • hrules - Controls printing of horizontal rules after rows. Allowed values: FRAME, ALL, NONE - note that these are variables defined inside the prettytable module so make sure you import them or use prettytable.FRAME etc.
    • vrules - Controls printing of vertical rules between columns. Allowed values: FRAME, ALL, NONE
    • align - Horizontal alignment (None, “l” (left), “c” (centre), “r” (right))
    • valign - Vertical alignment (None, “t” (top), “m” (middle) or “b” (bottom))
    • int_format - Controls formatting of integer data. This should be a string which can be placed between “%” and “d” in something like print “%d” % 42.
    • float_format - Controls formatting of floating point data. This should be a string which can be placed between “%” and “f” in something like print “%f” % 4.2.
    • padding_width - Number of spaces on either side of column data (only used if left and right paddings are None).
    • left_padding_width - Number of spaces on left hand side of column data.
    • right_padding_width - Number of spaces on right hand side of column data.
    • vertical_char - Single character string used to draw vertical lines. Default is |.
    • horizontal_char - Single character string used to draw horizontal lines. Default is -.
    • junction_char - Single character string used to draw line junctions. Default is +.
    用法
    x = PrettyTable() 
    x.border = False 
    x.header = False 
    x.padding_width = 5
    • 1
    • 2
    • 3
    • 4
    x = PrettyTable(border=False, header=False, padding_width=5)
    • 1

    以上两种设置方式等效

    调整对齐方式的几种方法
    print(x.get_string(align="l"))
    • 1
    x.align["City name"] = "l" 
    x.align["Population"] = "c" 
    x.align["Area"] = "r"
    • 1
    • 2
    • 3
    x.align = "l'
    • 1

    参考资料

  • 相关阅读:
    (转载)5分钟安装Linux系统到U盘
    (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)
    (原创)LAMP搭建之一:图解如何安装并检查LAMP
    OpenGL-渲染管线的流程(有图有真相)
    判断点在直线上
    使用QT开发GoogleMap瓦片显示和下载工具
    转:PCL+VS2010环境配置
    error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”
    An error occurred during the installation of assembly 'Microsoft.VC90.ATL or 'Microsoft.VC80.ATL'
    如何确定VS编译器版本
  • 原文地址:https://www.cnblogs.com/hdk1993/p/8017223.html
Copyright © 2011-2022 走看看