安装:pip install PrettyTable
# -*- coding:utf-8 -*-
from prettytable import PrettyTable
x = PrettyTable(field_names=["name", "age", "sex", "money"])
x.align["name"] = "l" # 以name字段左对齐
x.padding_width = 1 # 填充宽度
x.add_row(["wang",20, "man", 1000])
x.add_row(["alex",21, "man", 2000])
x.add_row(["peiqi",22, "man", 3000])
# print(x)
#表排序
print(x.get_string(sortby="money", reversesort=True))
#自带样式打印,参数还可以选择“DEFAULT”、“PLAIN_COLUMNS”
# print(x.set_style(MSWORD_FRIENDLY))
'''
+-------+-----+-----+-------+
| name | age | sex | money |
+-------+-----+-----+-------+
| wang | 20 | man | 1000 |
| alex | 21 | man | 2000 |
| peiqi | 22 | man | 3000 |
+-------+-----+-----+-------+
'''
from prettytable import PrettyTable
pt = PrettyTable()
pt.field_names = [i for i in range(1, 10)]
mulp = [["{b}x{a}={c}".format(a=a, b=b, c=a * b) if a >= b else "" for b in range(1, 10)] for a in range(1, 10)]
for mu in mulp: pt.add_row(mu)
print(pt)
'''
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
| 1x1=1 | | | | | | | | |
| 1x2=2 | 2x2=4 | | | | | | | |
| 1x3=3 | 2x3=6 | 3x3=9 | | | | | | |
| 1x4=4 | 2x4=8 | 3x4=12 | 4x4=16 | | | | | |
| 1x5=5 | 2x5=10 | 3x5=15 | 4x5=20 | 5x5=25 | | | | |
| 1x6=6 | 2x6=12 | 3x6=18 | 4x6=24 | 5x6=30 | 6x6=36 | | | |
| 1x7=7 | 2x7=14 | 3x7=21 | 4x7=28 | 5x7=35 | 6x7=42 | 7x7=49 | | |
| 1x8=8 | 2x8=16 | 3x8=24 | 4x8=32 | 5x8=40 | 6x8=48 | 7x8=56 | 8x8=64 | |
| 1x9=9 | 2x9=18 | 3x9=27 | 4x9=36 | 5x9=45 | 6x9=54 | 7x9=63 | 8x9=72 | 9x9=81 |
+-------+--------+--------+--------+--------+--------+--------+--------+--------+
'''
#一行打印九九乘法表
print ('\n'.join([' '.join(['%s*%s=%-2s' % (j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
'''
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
'''
###创建表
直接创建
pt = PrettyTable()
从已有文件创建
from prettytable import from_csv
fp = open("mytable.csv", "r")
pt = from_csv(fp)
fp.close()
from prettytable import from_html
pts = from_html(html_string)
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())
print(pt.get_html_string())
print(pt.get_string(fields = ["City name", "Population"]))
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文档
两种设置方式等效
x = PrettyTable()
x.border = False
x.header = False
x.padding_width = 5
or
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'
# -*- coding:utf-8 -*-
import requests
import re
import argparse
from bs4 import BeautifulSoup
from prettytable import PrettyTable
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--city', default='hangzhou')
args = parser.parse_args()
city = args.city
url = 'http://weather.sina.com.cn/' + city
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
city = soup.find(class_='slider_ct_name').string
date = []
weather = []
temperature = []
pt = PrettyTable(['date', 'daytime', 'night', 'tempeature'])
pt.align['date'] = '1'
# get date
for item in soup('p', class_='wt_fc_c0_i_date'):
date.append(bytes.decode(item.string.encode('utf-8')))
# get weather
for item in soup("img", {"class": 'icons0_wt'}):
weather.append(bytes.decode(item['alt'].encode('utf-8')))
# get temperature
for item in soup('p', class_='wt_fc_c0_i_temp'):
temperature.append(bytes.decode(item.string.encode('utf-8')))
# make table
for counter in range(7):
currow = []
currow.append(date[counter])
currow.append(weather[2 * counter])
currow.append(weather[2 * counter + 1])
currow.append(temperature[counter])
pt.add_row(currow)
print(pt)
filename = city + '7日天气' + '.txt'
with open(filename, 'w') as fp:
fp.write('\t\t\t' + city + '7日天气\n')
fp.write(str(pt))
结果:
+-------+---------+-------+-------------+
| date | daytime | night | tempeature |
+-------+---------+-------+-------------+
| 08-06 | 晴 | 晴 | 37°C / 27°C |
| 08-07 | 多云 | 晴 | 36°C / 27°C |
| 08-08 | 多云 | 晴 | 35°C / 26°C |
| 08-09 | 晴 | 晴 | 36°C / 27°C |
| 08-10 | 晴 | 多云 | 37°C / 27°C |
| 08-11 | 多云 | 多云 | 36°C / 27°C |
| 08-12 | 多云 | 多云 | 36°C / 27°C |
+-------+---------+-------+-------------+
参考:https://blog.csdn.net/u013630675/article/details/78773356