乾貨合集│最好用的 python 庫都在這

来源:https://www.cnblogs.com/cxyliangzai/archive/2022/06/09/16360794.html
-Advertisement-
Play Games

一、分詞 - jieba 優秀的中文分詞庫,依靠中文詞庫,利用詞庫確定漢子之間關聯的概率,形成分詞結果 import jieba word = '偉大的中華人民共和國' jieba.cut(word) jieba.lcut(word) 二、詞雲庫 - wordcloud 對數據中出現頻率較高的 關鍵 ...


一、分詞 - 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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jQuery parent() 方法 parent() 方法返回被選元素的直接父元素。 該方法只會向上一級對 DOM 樹進行遍歷。 下麵的例子返回每個 <span> 元素的直接父元素: 實例 $(document).ready(function(){ $("span").parent(); }); ...
  • 一個簡單的 vue3 的 websocket hook. 有以下基礎功能: 創建鏈接 失敗重連 發送心跳包 import { ref } from "vue"; export interface WS_CONFIG { url: string; // ws鏈接地址 sendData?: Record ...
  • JavaScript基礎數據類型BigInt實踐,JSON-bigint,bignumber.js,JavaScript精度問題 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 業務背景 近些年來,隨著前端工程架構發展,使得前端項目中也能擁有如後端工程的模塊能力。正所謂 “能力(越)越大(來),責任(越)越大(捲)”,現在的前端工程不僅僅要滿足業務需求,還伴隨更多複雜的環境適配問題,例如: 1.api請求的功能變數名稱會 ...
  • StackOverflow和StackExchange等等都是程式員常用的問題反饋和解決平臺,相當於是專業性更強的知乎。但是很多類似的網站界面打開後總是有一個privacy收集的視窗無法關閉,在很大情況下影響了我們平時的閱讀。因此我們通過前端的屏蔽方法,可以取消privacy位置收集視窗的固定,從而... ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 時間的獲取及時間各格式間的轉換是比較常用的操作,但一是多種語言經常容易弄混,二是同一種語言同一個功能可能有不同的實現函數,導致每次處理時間經常要百度所以來記錄一下。 另外個人真不喜歡同樣功能有多種寫法的形式,從理想角度說多種實現方式讓不同的人都能以其喜歡的方式進行編寫;但實際上當你忘記的時候,你就總 ...
  • 沙包和打傘的故事 美國在1961年到1972年組織實施的一系列載人登月飛行任務。目的是實現載人登月飛行和人對月球的實地考察,為載人行星飛行和探測進行技術準備,它是世界航天史上具有劃時代意義的一項成就。阿波羅計劃始於1961年5月,至1972年12月第6次登月成功結束,歷時約11年,耗資255億美元。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...