Python PrettyTable 模块

Python PrettyTable 模块

  • Python PrettyTable 模块
    • 简介
    • 安装
    • 示例
    • 使用
      • 创建表
        • 直接创建
        • 从已有文件创建
          • CSV
          • HTML
          • SQL
      • 添加元素
        • 按行添加
        • 按列添加
      • 输出格式
        • ASCII码表
          • 直接输出
          • 无表格框输出
        • HTML表
        • 选择子表
        • 表排序
      • 控制表样式
        • 自带样式
        • 手动控制样式
          • 可调整选项
          • 用法
          • 调整对齐方式的几种方法
    • 参考资料

简介

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

安装

pip install prettytable

示例

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    |
+----------------------+----------+
'''

使用

创建表

直接创建

pt = PrettyTable()

从已有文件创建

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

添加元素

按行添加

pt.add_row()

按列添加

pt.add_column()

输出格式

ASCII码表

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

HTML表

print(pt.get_html_string())

选择子表

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

表排序

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

控制表样式

自带样式

#参数还可以选择“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 - 绘制水平竖直交汇点的字符,默认为“+”

  • 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
x = PrettyTable(border=False, header=False, padding_width=5)

以上两种设置方式等效

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

参考资料

  • prettytable 文档
    使用方法从文档摘取过来的 更多用法请直接参考文档
  • python之PrettyTable模块
  • Python prettytable.PrettyTable Examples
    更多实例提供参考

你可能感兴趣的:(python)