python库
datetime库
处理时间和日期
import datetime dtBirth = datetime.date(2000, 9, 27) # 创建日期对象,日期为2000年9月27日 print(dtBirth.weekday()) # 输出dtBirth代表的日期是星期几,0表示星期一 dtNow = datetime.date.today() # 取今天的日期 print(dtBirth < dtNow) # True 日期可以比较大小 life = dtNow - dtBirth # 取两个日期的时间差 print(life.days, life.total_seconds()) # 相差的天数, 相差的秒数 delta = datetime.timedelta(days=-10) # 构造时间差对象,时间差为-10天 newDate = dtNow + delta # newDate代表的日期是dtNow的日期往前数10天 print(newDate.year, newDate.month, newDate.day, newDate.weekday()) print(newDate.strftime(r'%m/%d/%Y')) newDate = datetime.datetime.strptime("2020.08.05", "%Y.%m.%d") print(newDate.strftime('%Y%m%d')) tm = datetime.datetime.now() # 取时间,精确到微秒 print(tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second, tm.microsecond) tm = datetime.datetime(2017, 8, 10, 15, 56, 10, 0) print(tm.strftime("%Y%m%d %H:%M:%S")) print(tm.strftime("%Y%m%d %I:%M:%S %p")) tm2 = datetime.datetime.strptime("2013.08.10 22:31:24", "%Y.%m.%d %H:%M:%S")
random库
随机库(伪随机)
random库的函数
random.random() | 随机生成一个[0,1]之间的数 |
random.uniform(x,y) | 随机生成一个[x,y]之间的数(含两端,下同)。x,y可以是小数 |
random.randint(x,y) | 随机生成一个[x,y]之间的整数。x,y都是整数 |
random.randrange(x,y,z) | 在range(x,y,z)中随机取一个数 |
random.choice(x) | 从序列x中随机取一个元素。x可以是为列表、元组、字符串 |
random.shuffle(x) | 将列表x的元素顺序随机打乱 |
random.sample(x,n) | 从序列x中随机取出一个长度为n的子序列。x可以是元组、列表、集合 |
random.seed(x) | 设置随机种子为x。x可以是整数、元组、字符串(不设置默认以时间为种子),种子一样产生的伪随机数就是一样的 |
import random # random.seed(2) print(random.random()) print(random.uniform(1.2, 7.8)) print(random.randint(-20, 70)) print(random.randrange(2, 30, 3)) print(random.choice("hello,world")) print(random.choice([1, 2, 'ok', 34.6, 'jack'])) lst = [1, 2, 3, 4, 5, 6] random.shuffle(lst) print(lst) print(random.sample(lst, 3))
jieba库
分词
import jieba # 导入分词库 s = '我们热爱中华人民共和国' lst = jieba.lcut(s) # 分词结果是一个列表,默认采用精确模式分词,分出的结果正好拼成原文 print(lst) print(jieba.lcut(s, cut_all=True)) # 全模式分词,输出所有可能的词 print(jieba.lcut_for_search(s)) # 搜索引擎模式分词 s = '拼多多是个网站' print(jieba.lcut(s)) jieba.add_word('拼多多') print(jieba.lcut(s))
openpyxl库
读取excel表格
# excel文件的读取 import openpyxl as pxl book = pxl.load_workbook(r'C:\users\luoheng_sdjzu\Desktop\交接清单.xlsx', data_only=True) # book是整个excel文件 # data_only=True 代表将公式计算为值 sheet = book.worksheets[0] # 取第0张工作表 # sheet = book.active # 取活跃的工作表(缺省就是第0张工作表) # sheet = book['交接内容'] # 取名为“交接内容”的工作表 print(sheet.title) # 取工作表的名字(显示于工作表下方的标签) print(sheet.min_row, sheet.max_row) # 打印最小有效行号,最大有效行号 print(sheet.min_column, sheet.max_column) # 输出最小有效列号,最大有效列号 # for sheet in book.worksheets: # worksheets是工作表构成的列表 # print(sheet.title) for row in sheet.rows: # 按行遍历整个工作表,从第一行到sheet.max_row行(含) for cell in row: # 遍历一行的每个单元格。cell是一个单元格 print(cell.value) # cell.value是单元格的值,空单元格值是None for cell in sheet['A']: # 遍历名为A的那一列 print(cell.value) for cell in sheet[3]: # 遍历第三行 print(cell.value, type(cell.value), cell.coordinate, cell.col_idx, cell.number_format) print(pxl.utils.get_column_letter(5)) # 根据列号求列名 print(pxl.utils.column_index_from_string('D')) # 根据列名求列号 print(pxl.utils.column_index_from_string('AC')) colRange = sheet['A:B'] # 从第C列到第F列(含F列) for col in colRange: # 按列遍历从第C列到第F列,col代表一列 for cell in col: # cell是一个单元格 print(cell.value) rowRange = sheet[5:10] # rowRange代表第5行到第10行(含第十行) for row in sheet['A1':'B2']: # 按行遍历左上角是A1右下角是D2的子表 for cell in row: print(cell.value) print(sheet['B4'].value) print(sheet.cell(row=8, column=4).value) # 输出第8行第4列单元格的值
创建excel表格
import openpyxl import datetime book = openpyxl.Workbook() # 在内存中创建一个excel文档,W大写 sheet = book.active # 取第0个工作表 sheet.title = "sample1" # 工作表取名为sample1 dataRows = ( (10, 20, 30, 40.5), (100, 200, '=sum(A1:B2)'), [], ['1000', datetime.datetime.now()], ) for row in dataRows: sheet.append(row) # 在工作表中添加一行 # 设置B列宽度,使其能完整显示B4单元格里的时间 sheet.column_dimensions['B'].width = len(str(sheet['B4'].value)) sheet['E1'].value = "=sum(A1:D1)" sheet['E2'].value = 12.5 # 单元格的值为小数 sheet['E2'].number_format = "0.00%" # 单元格显示格式为百分比形式 sheet['F1'].value = 3500 # 单元格值类型为int sheet['F2'].value = "35.00" # 单元格值类型为str sheet['F3'].value = datetime.datetime.today().date() sheet.column_dimensions['F'].width = len(str(sheet['F3'].value)) sheet.row_dimensions[2].height = 48 # 设置第2行的高度为48 points sheet2 = book.create_sheet("Sample2") # 添加名为sheet2的工作表 sheet2['A1'] = 50 # 将A1单元格的值设置为50 sheet2 = book.create_sheet("Sample0", 0) # 创建一个新的工作表,并且它的编号为0 sheet3 = book.copy_worksheet(sheet) # 添加一张新工作表,其为sheet的拷贝 book.remove_sheet(book['Sample2']) # 删除名为Sample2的工作表 book.save(r'd:\python\sample.xlsx') # 保存文件
将字符串转换为真正的数字
import openpyxl as pxl book = pxl.load_workbook(r'd:\python\test3.xlsx') for sheet in book.worksheets: for row in sheet.rows: for cell in row: v = cell.value if type(v) == str: if v.isdigit(): # 如果v全部由数字组成 cell.value = int(v) else: try: cell.value = float(v) except: pass book.save(r'd:\python\test4.xlsx')
将数字转换为字符串
import openpyxl as pxl book = pxl.load_workbook(r'd:\python\test2.xlsx') for sheet in book.worksheets: for row in sheet.rows: for cell in row: if type(cell.value) == int or type(cell.value) == float: cell.value = str(cell.value) book.save(r'd:\python\test3.xlsx')
Pillow库
用于图像处理的库
图像的缩放
from PIL import Image # 导入Image类进行图像处理 img = Image.open(r'C:\Users\luoheng_sdjzu\Desktop\11.jpg') # 将图像文件载入对象image w, h = img.size # 获取图像的宽和高(单位:像素),img.size是个元组 newSize = (w//2, h//2) # 生成一个新的图像尺寸 newImg = img.resize(newSize) # 得到一个新的图像,图像的宽和高都为原图像的一半 newImg.save(r'C:\Users\luoheng_sdjzu\Desktop\grass_half.jpg') # 保存新图像 newImg.thumbnail((128, 128)) # 变成宽高各128像素的缩略图 newImg.save(r'C:\Users\luoheng_sdjzu\Desktop\grass_thumb.png', "PNG") # 保存新图像文件为png文件 newImg.show() # 显示图像文件
图像的旋转、翻转和滤镜
# 图像的旋转、翻转和滤镜效果 from PIL import Image from PIL import ImageFilter # 实现滤镜效果需要 img = Image.open(r'd:\test\grass_half.jpg') print(img.format, img.mode) # JPEG RGB newImg = img.rotate(90, expand=True) # 图像逆时针旋转90度 # newImg.show() # 显示图像 newImg = img.transpose(Image.FLIP_LEFT_RIGHT) # 左右翻转 newImg = img.transpose(Image.FLIP_TOP_BOTTOM) # 上下翻转(颠倒) newImg = img.filter(ImageFilter.BLUR) # 模糊效果 newImg.show() # 滤镜效果: # ImageFilter.CONTOUR # 轮廓效果 # ImageFilter.EDGE_ENHANCE # 边缘增强 # ImageFilter.EMBOSS # 浮雕 # ImageFilter.SMOOTH # 平滑 # ImageFilter.SHARPEN # 锐化
图像的裁剪
# 图像的裁剪 from PIL import Image img = Image.open(r"d:\test\11.jpg") w, h = img.size[0]//3, img.size[1]//3 gap = 10 # 九宫图中相邻两幅子图间的空白宽10像素 newImg = Image.new("RGB", (w * 3 + gap * 2, h * 3 + gap * 2), "white") for i in range(0,3): for j in range(0,3): clipImg = img.crop((j*w, i*h, (j+1)*w, (i+1)*h)) clipImg.save(r"d:\test\grass%d%d.jpg" %(i, j)) newImg.paste(clipImg, (j*(w+gap), i*(h+gap))) newImg.save(r"d:\test\grass9.jpg") # 保存九宫格 newImg.show()
图像的素描化
# 图像的素描化 from PIL import Image def makeSketch(img, threshold): w, h = img.size img = img.convert('L') # 图像转换为灰度模式 # img.show() pix = img.load() # 获取像素矩阵 for x in range(w-1): for y in range(h-1): if abs(pix[x,y] - pix[x+1, y+1]) >= threshold: pix[x, y] = 0 # 黑色 else: pix[x, y] = 255 # 白色 return img img = Image.open(r"d:\test\11.jpg") img = makeSketch(img, 15) # 阈值threshold为15 img.show()
为图像添加水印