Python输出表格


1.导入PrettyTable库

需要输出中文,所以要将编码方式设为"utf-8",不同版本的设置方式不同。

在terminal中输入python --version获取当前python版本。

1)python 2.X

#  编码方式
import sys
reload(sys)
sys.setdefaultencoding("utf-8") 

#  导入库
from prettytable import PrettyTable

2)python3.X-3.3

#  编码方式
import imp, sys
imp.reload(sys)

#导入库
from prettytable import PrettyTable

3)python3.4以上

#  编码方式
import importlib, sys
importlib.reload(sys)

#  导入库
from prettytable import PrettyTable

注:本文代码按照python3.9的格式编写

2.安装

prettytable库不是python的内置库,需要先安装

在项目terminal中输入pip install prettytable即可安装

3.代码示例

#  编码方式
import importlib, sys
importlib.reload(sys)

#  导入库
from prettytable import PrettyTable
 
#  输出
table = PrettyTable(['学号', '姓名', '年龄'])  # 表头
table.add_row(['1', '张三', '14'])  # 第一行
table.add_row(['2', '李四', '14'])  # 第二行
table.add_row(['3', '王五', '13'])
table.add_row(['4', '郭一', '15'])
table.add_row(['5', '张二', '13'])
table.add_row(['6', '李一', '12'])
table.add_row(['7', '王三', '14'])
table.add_row(['8', '韦七', '15'])
table.add_row(['9', '戴六', '15'])
print(table)

运行结果

+------+------+------+
| 学号 | 姓名 | 年龄 |
+------+------+------+
|  1   | 张三 |  14  |
|  2   | 李四 |  14  |
|  3   | 王五 |  13  |
|  4   | 郭一 |  15  |
|  5   | 张二 |  13  |
|  6   | 李一 |  12  |
|  7   | 王三 |  14  |
|  8   | 韦七 |  15  |
|  9   | 戴六 |  15  |
+------+------+------+

如果按列表示,则使用table.add_column

4.从csv文件中添加数据

#  编码方式
import importlib, sys
importlib.reload(sys)

#  导入库
from prettytable import PrettyTable
from prettytable import from_csv 
 
table = PrettyTable()
fp = open("file.csv", "r") 
table = from_csv(fp) 
print(table)
fp.close()

运行结果

+------+------+------+
| 学号 | 姓名 | 年龄 |
+------+------+------+
|  1   | 张三 |  14  |
|  2   | 李四 |  14  |
|  3   | 王五 |  13  |
|  4   | 郭一 |  15  |
|  5   | 张二 |  13  |
|  6   | 李一 |  12  |
|  7   | 王三 |  14  |
|  8   | 韦七 |  15  |
|  9   | 戴六 |  15  |
+------+------+------+

注:只能是csv文件。如果是xls文件,可以另存为csv文件。

5.选择性输出

1)输出指定列

print(table.get_string(fields=['姓名']))

输出结果

+------+
| 姓名 |
+------+
| 张三 |
| 李四 |
| 王五 |
| 郭一 |
| 张二 |
| 李一 |
| 王三 |
| 韦七 |
| 戴六 |
+------+

2)输出i-j行

print(table.get_string(start=1, end=4))

输出结果

+------+------+------+
| 学号 | 姓名 | 年龄 |
+------+------+------+
|  2   | 李四 |  14  |
|  3   | 王五 |  13  |
|  4   | 郭一 |  15  |
+------+------+------+

表头不算入,第一行输出表头。

行数从0开始

start = 1, end = 4 ,表示表格内容的第1 - 3行,即第start行计入,第end行不计入。

3)将表格切片

new_table = table[2:5].get_string(fields=['姓名'])
print(new_table)

输出结果

+------+
| 姓名 |
+------+
| 王五 |
| 郭一 |
| 张二 |
+------+

6.多种输出样式

#  编码方式
import importlib, sys

importlib.reload(sys)

#  导入库
from prettytable import PrettyTable
from prettytable import MSWORD_FRIENDLY
from prettytable import PLAIN_COLUMNS
from prettytable import RANDOM
from prettytable import DEFAULT

#  输出
table = PrettyTable(['学号', '姓名', '年龄'])  # 表头
table.add_row(['1', '张三', '14'])  # 第一行
table.add_row(['2', '李四', '14'])  # 第二行
table.add_row(['3', '王五', '13'])
table.add_row(['4', '郭一', '15'])
table.add_row(['5', '张二', '13'])
table.add_row(['6', '李一', '12'])
table.add_row(['7', '王三', '14'])
table.add_row(['8', '韦七', '15'])
table.add_row(['9', '戴六', '15'])
table.set_style(MSWORD_FRIENDLY)
print("MSWORD_FRIENDLY")
print(table)
print()
table.set_style(PLAIN_COLUMNS)
print("PLAIN_COLUMNS")
print(table)
print()
table.set_style(RANDOM)
print("RANDOM")
print(table)
print()
table.set_style(DEFAULT)
print("DEFAULT")
print(table)
print()

输出结果

MSWORD_FRIENDLY
| 学号 | 姓名 | 年龄 |
|  1   | 张三 |  14  |
|  2   | 李四 |  14  |
|  3   | 王五 |  13  |
|  4   | 郭一 |  15  |
|  5   | 张二 |  13  |
|  6   | 李一 |  12  |
|  7   | 王三 |  14  |
|  8   | 韦七 |  15  |
|  9   | 戴六 |  15  |

PLAIN_COLUMNS
学号        姓名        年龄        
 1          张三         14         
 2          李四         14         
 3          王五         13         
 4          郭一         15         
 5          张二         13         
 6          李一         12         
 7          王三         14         
 8          韦七         15         
 9          戴六         15         

RANDOM
''''''''''''''''''''''''''''
  学号     姓名     年龄    
''''''''''''''''''''''''''''
   1       张三      14     
   2       李四      14     
   3       王五      13     
   4       郭一      15     
   5       张二      13     
   6       李一      12     
   7       王三      14     
   8       韦七      15     
   9       戴六      15     
''''''''''''''''''''''''''''

DEFAULT
+------+------+------+
| 学号 | 姓名 | 年龄 |
+------+------+------+
|  1   | 张三 |  14  |
|  2   | 李四 |  14  |
|  3   | 王五 |  13  |
|  4   | 郭一 |  15  |
|  5   | 张二 |  13  |
|  6   | 李一 |  12  |
|  7   | 王三 |  14  |
|  8   | 韦七 |  15  |
|  9   | 戴六 |  15  |
+------+------+------+

文章作者: 易安
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 易安 !
评论
  目录