共计 6415 个字符,预计需要花费 17 分钟才能阅读完成。
一、分词 – jieba
- 优良的中文分词库,依附中文词库,利用词库确定汉子之间关联的概率,造成分词后果
import jieba
word = '平凡的中华人民共和国'
jieba.cut(word)
jieba.lcut(word)
二、词云库 – wordcloud
- 对数据中呈现频率较高的
关键词
生成的一幅图像,予以视觉上的突出
import jieba
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud
def run(word_path, picture_path):
with open(word_path, 'r') as f:
word = f.read()
cut_word = ' '.join(jieba.cut(word))
color_mask = np.array(Image.open(picture_path))
word_cloud = WordCloud(
# 设置字体,不指定就会呈现乱码
font_path='/System/Library/Fonts/PingFang.ttc',
# 设置背景色
background_color='white',
# 词云形态
mask=color_mask,
# 容许最大词汇
max_words=120,
# 最大号字体
max_font_size=2000
).generate(cut_word)
word_cloud.to_file('word_cloud.jpg')
im = word_cloud.to_image()
im.show()
三、可视化进度条 – tpdm
- 难看的进度条,不仅会让人一眼就晓得 工作的进度,还可能让本人的情绪愉悦
from time import sleep
from tqdm import tqdm
# 这里同样的,tqdm 就是这个进度条最罕用的一个办法
# 外面存一个可迭代对象
for i in tqdm(range(1, 500)):
# 模仿你的工作
sleep(0.01)
sleep(0.5)
四、柔美的表格 – PrettyTable
- 能够让你在命令行打印出柔美的表格
import prettytable as pt
# 按行增加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['亮仔', 25, 174, 65])
tb.add_row(['程序员', 23, 164, 55])
tb.add_row(['程序员亮仔', 27, 184, 69.5])
print(tb)
# +-----------+-----+--------+--------+
# | name | age | height | weight |
# +-----------+-----+--------+--------+
# | 亮仔 | 25 | 174 | 65 |
# | 程序员 | 23 | 164 | 55 |
# | 程序员亮仔 | 27 | 184 | 69.5 |
# +-----------+-----+--------+--------+
五、多过程 – multiprocessing
- 创立多过程
from multiprocessing import Process
def func(s):
print(s)
if __name__ == '__main__':
process = [Process(target=func, args=('1',))
Process(target=func, args=('2',))
]
[p.start() for p in process]
[p.join() for p in process]
六、多线程 – threading
- 创立多线程
import threading
def func(s):
print(s)
if __name__ == '__main__':
thread = [threading.Thread(target=func, args=('1',))
threading.Thread(target=func, args=('2',))
]
[t.start() for t in thread]
[t.join() for t in thread]
七、谷歌翻译 – googletrans
- 主动语言检测,批量翻译,语言检测等
from googletrans import Translator
translator = Translator()
# 未提供源语言以及翻译的最终语言, 会主动翻译成英文
translator.translate('안녕하세요.')
# 通知它翻译成什么语言
translator.translate('안녕하세요.', dest='ja')
# 通知它源语言是什么
translator.translate('程序员亮仔', src='zh-cn')
# 语言检测
t = ttranslator.detect('이 문장은 한글로 쓰여졌습니다.')
t.lang
八、反复回调 – retrying
- 如果申请失败,咱们须要再从新进行进行申请,避免申请异样导致数据缺失
from retrying import retry
@retry(stop_max_attempt_number=5)
def say():
try:
cxyliangzai
except Exception as e:
# 能够将谬误记录日志
print(e)
raise
say()
九、游戏开发 – pygame
- 实现 python 游戏的开发,能够开发各种大小型游戏
import pygame, sys
from pygame.locals import *
# 初始化 pygame
pygame.init()
# 设置窗口的大小,单位为像素
screen = pygame.display.set_mode((500,400), 0, 32)
# 设置窗口的题目
pygame.display.set_caption('用户事件监控')
# 设置背景
screen.fill((255, 255, 255))
# 程序主循环
while True:
# 获取事件
for event in pygame.event.get():
# 判断事件是否为退出事件
if event.type == QUIT:
# 退出 pygame
pygame.quit()
# 退出零碎
sys.exit()
# 取得键盘按下的事件
if event.type == KEYDOWN:
if(event.key==K_UP or event.key==K_w):
print("上")
if(event.key==K_DOWN or event.key==K_s):
print("下")
if(event.key==K_LEFT or event.key==K_a):
print("左")
if(event.key==K_RIGHT or event.key==K_d):
print("右")
# 按下键盘的 Esc 键退出
if(event.key==K_ESCAPE):
# 退出 pygame
pygame.quit()
# 退出零碎
sys.exit()
# 取得鼠标以后的地位
if event.type ==MOUSEMOTION:
print(event.pos)
# 取得鼠标按下的地位
if event.type ==MOUSEBUTTONDOWN:
print("鼠标按下:", event.pos)
# 取得鼠标抬起的地位
if event.type ==MOUSEBUTTONUP:
print("鼠标抬起:", event.pos)
# 绘制屏幕内容
pygame.display.update()
十、绘图教程 – turtle
- 能够画出各种各样微妙的图案,几乎就是程序中的画板
from turtle import *
colors = ['red', 'purple', 'blue', 'green', 'yellow', 'orange']
for x in range(360):
pencolor(colors[x % 6])
width(x / 100 + 1)
forward(x)
left(59)
十一、数据分析 – pandas
- 数据分析解决库,为解决数据分析工作而创立的,可能疾速便捷地解决数据的函数和办法
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
# 查看数据框的一些属性:最大、最小、均值、四分位数等
info.describe()
# 空值相干的操作
pin = info["pin"]
pin_isnull = pd.isnull(pin)
pin_isnull_list = info[pin_isnull]
len(pin_isnull_list)
# 缺失值相干操作, 简略的解决方法就是过滤掉 null 值
books = info["life_cycle_books"]
book_isnull = pd.isnull(books)
book_list_isnull = info["life_cycle_books"][book_isnull == False]
mean = sum(book_list_isnull) / len(book_list_isnull)
# 删除缺失值, 所有行
na_info = info.dropna(axis = 1)
# 删除缺失值, 能够指定列
na_info = info.dropna(axis = 0, subset = ["age", "name"])
十二、算法加密 – pycryto
- pycryto 能实现大抵 3 种类型的数据加密(单向加密、对称加密 和非对称加密),产生随机数,生成密钥对,数字签名
from Crypto.Hash import SHA256
hash = SHA256.new()
hash.update('Hello, World!')
# 应用 digest()办法加密
digest = hash.digest()
# 应用 hexdigest()办法加密,该办法加密后是 16 进制的
hexdigest = hash.hexdigest()
print(digest, hexdigest)
十三、操作 win 电脑 – pywin32
- pywin32 包装了 Windows 零碎的 Win32 API,能创立和应用 COM 对象和图形窗口界面
import win32api
import win32con
hid = win32gui.WindowFromPoint((100, 100))
# 获取窗口题目
title = win32gui.GetWindowText(hid)
# 获取窗口类名
class_name = win32gui.GetClassName(hid)
# 模仿鼠标在 (400, 500) 地位进行点击操作
point = (400, 500)
win32api.SetCursorPos(point)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
十四、主动程序测试 – Selenium
- Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试间接运行在浏览器中,就像真正的用户在操作一样
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化谷歌浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 关上头条登陆网址
driver.get('https://sso.toutiao.com')
# 期待某个元素是否呈现
WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'发送')
)
# 实例化鼠标操作
action = ActionChains(self.driver)
# 按住滑块
action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform()
# 将滑块挪动 x 的间隔
action.move_by_offset(xoffset=x, yoffset=0).perform()
# 开释滑块
action.release().perform()
十五、音频播放 – mp3play
- 一款超级小型的音频操作库,能够实现播放音乐,按空格键实现暂停和播放的切换
import mp3play
clip = mp3play.load('music.mp3')
clip.play()
十六、网页解析 – BeautifulSoup
- 是一个网页解析库,可能疾速的剖析网页构造
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p class="name nickname user"><b>i am cxyliangzai</b></p>', 'html.parser')
#获取整个 p 标签的 html 代码
print(soup.p)
#获取 b 标签
print(soup.p.b)
#获取 p 标签内容,应用 NavigableString 类中的 string、text、get_text()
print(soup.p.text)
#返回一个字典,外面是多有属性和值
print(soup.p.attrs)
#查看返回的数据类型
print(type(soup.p))
#依据属性,获取标签的属性值,返回值为列表
print(soup.p['class'])
#给 class 属性赋值, 此时属性值由列表转换为字符串
soup.p['class']=['Web','Site']
print(soup.p)
十七、日志解决 – logging
- 打印和记录日志
import logging
logging.basicConfig(filename='logging.text', level=logging.DEBUG)
logging.debug('It is a debug')
logging.info('It is a info')
logging.warning('It is a warning')
十八、图像处理 – PIL
- 非常适合于图像归档以及图像的批处理工作。能够应用 PIL 创立缩略图,转换图像格式,打印图像等等
from PIL import Image
im = Image.open("picture.jpg")
new_im = im.convert('L')
print(new_im.mode)
new_im.show()
十九、发送邮件 – yagmail
- 是一种非常简单用来实现主动发邮件性能的包,能够实现给单人或者多人同时发送邮件
import yagmail
# 链接邮箱服务器
yag = yagmail.SMTP(user='邮箱地址', password='登录明码', host='smtp.163.com')
# 邮箱注释
contents = ['邮件第一行内容', '邮件第二行内容', '邮件第三行内容']
# 给用户发送邮件并增加多个附件
yag.send(['指标邮箱地址 1', '指标邮箱地址 2', '指标邮箱地址 3'], '邮件题目', contents, ['c:// 附件.pdf', 'c://picture.jpg'])
二十、源码打包 – pyinstaller
- 将源码打包成 exe 文件,间接在 window 上运行
pyinstaller -F -w -p ./lib -i logo.ico main.py
正文完