百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

7个常用Python工具库及使用方法,助你成为高效开发者

itomcoil 2025-02-27 15:35 48 浏览

转载说明:原创不易,未经授权,谢绝任何形式的转载

用上这7个库,加速你的项目开发

在Python应用程序开发中,通常需要使用各种工具库来完成各种任务,比如处理电子邮件地址、解析JSON数据、读取Excel文件等等。在这篇文章中,我们将介绍一些常用的Python工具库,讨论它们的用途、功能和特点,并提供一些示例代码,帮助读者更好地理解这些工具库的使用方法。

1. EasyOCR

EasyOCR是一个Python工具库,它提供了一个简单易用的OCR(Optical Character Recognition,光学字符识别)解决方案,用于自然场景下的文字识别。它可以识别多种语言的文字,包括中文、英文、日文、韩文、阿拉伯文等,同时支持多种文字方向,包括横向、竖向、混合方向。

EasyOCR基于深度学习模型,使用了目前最先进的OCR技术,可以识别多种字体、字号、文字颜色和背景的文字。它还支持端到端的文本检测和识别,可以在一张图像中同时检测和识别多行文字,大大提高了文字识别的效率。

下面是一个简单的入门示例,使用EasyOCR识别一张图片中的文字:

import easyocr

# 创建EasyOCR对象
reader = easyocr.Reader(['ch_sim', 'en'], gpu=False)

# 读入图像
image = 'example.png'

# 进行OCR识别
result = reader.readtext(image)

# 输出识别结果
for r in result:
    print(r[1])

在这个示例中,我们首先创建了一个EasyOCR对象,指定了要识别的语言(中文和英文),并设置了使用CPU进行识别。然后,我们读入一张图像,调用reader.readtext方法进行OCR识别,得到了识别结果。最后,我们遍历识别结果,并输出识别出的文字。

需要注意的是,由于EasyOCR使用了深度学习模型,因此需要较大的计算资源和较长的识别时间。在实际应用中,可以通过调整参数、选择合适的设备等方式来优化识别效率。

https://github.com/JaidedAI/EasyOCR

2. Websockets

Websockets是一个Python工具库,用于在Python应用程序中实现WebSocket协议的客户端和服务器。WebSocket协议是一种在客户端和服务器之间实现双向通信的协议,可以让服务器主动向客户端推送消息,而不需要客户端不断地向服务器发送请求。

Websockets库提供了一个简单易用的API,可以让Python程序快速地实现WebSocket通信功能。它支持异步IO模型,可以在异步框架(如asyncio)中使用。

下面是一个简单的入门示例,使用Websockets库实现一个WebSocket服务器:

import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(message)

async def main():
    async with websockets.serve(echo, "localhost", 8765):
        await asyncio.Future()  # Run forever.

asyncio.run(main())

在这个示例中,我们首先定义了一个名为echo的协程函数,用于处理客户端发送的消息。在这个函数中,我们使用了async for循环来接收客户端发送的消息,并使用await websocket.send方法将消息原样返回给客户端。

然后,我们定义了一个名为main的协程函数,用于启动WebSocket服务器。在这个函数中,我们使用websockets.serve方法来创建一个WebSocket服务器,指定了要监听的地址和端口,以及要处理客户端连接的协程函数。

最后,我们使用asyncio.run方法来运行main协程函数,启动WebSocket服务器并等待客户端连接。该服务器会一直运行,直到程序被手动终止。

需要注意的是,WebSocket服务器需要在异步框架中运行,因此我们在示例中使用了asyncio库来实现异步IO。同时,Websockets库还支持其他的异步框架,如Trio和Curio等。

https://github.com/aaugustin/websockets

3. Gspread

gspread是一个Python工具库,有海外应用开发需求的朋友也许用的上,这个库用于在Google Sheets中读取和写入数据。Google Sheets是一款在线电子表格软件,可以让用户轻松地创建、编辑和共享电子表格。

gspread库提供了一个简单易用的API,可以让Python程序轻松地读取和写入Google Sheets中的数据。它使用Google Sheets API与Google Sheets进行通信,并支持OAuth2身份验证机制,保证了数据的安全性。

下面是一个简单的入门示例,使用gspread库读取一个Google Sheets电子表格中的数据:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# 定义OAuth2凭证
scope = ['https://www.googleapis.com/auth/spreadsheets']
creds = ServiceAccountCredentials.from_json_keyfile_name('creds.json', scope)

# 授权访问
client = gspread.authorize(creds)

# 打开电子表格
sheet = client.open('My Spreadsheet').sheet1

# 读取数据
data = sheet.get_all_records()

# 输出数据
print(data)

在这个示例中,我们首先定义了一个OAuth2凭证,用于授权访问Google Sheets API。然后,我们使用gspread库的authorize方法来进行身份验证,并获取一个Client对象。

接着,我们使用client.open方法打开一个名为My Spreadsheet的电子表格,并获取其中的第一个工作表(即sheet1)。然后,我们使用sheet.get_all_records方法来读取所有行的数据,并将其保存到一个字典列表中。

最后,我们输出读取到的数据。需要注意的是,gspread库还提供了许多其他的方法,用于在Google Sheets中读取和写入数据,如sheet.cell、sheet.update等方法。

需要使用gspread库操作Google Sheets电子表格,需要在Google Developers Console中创建一个项目并启用Google Sheets API。然后,可以创建一个服务账户,并将其授权访问所需的电子表格。在示例中,我们通过一个名为creds.json的JSON文件来指定服务账户的凭证信息。

https://github.com/burnash/gspread

4. Maya

maya是一个Python日期和时间工具库,用于处理、格式化和解析日期和时间。它提供了一种简单易用的API,可以帮助开发者快速处理各种时间相关的问题。

下面是一个简单的入门示例,使用maya库创建一个日期对象,并将其格式化为字符串:

import maya

# 创建一个日期对象
dt = maya.now()

# 格式化为字符串
str_dt = dt.iso8601()

# 输出日期字符串
print(str_dt)

在这个示例中,我们首先使用maya库的now方法创建了一个当前日期时间的日期对象。然后,我们使用日期对象的iso8601方法将其格式化为ISO 8601标准的日期时间字符串。最后,我们输出格式化后的字符串。

需要注意的是,maya库还提供了许多其他有用的方法和属性,如parse方法、timezone属性、humanize方法等,用于解析日期时间字符串、处理时区信息和将日期时间转换为人类可读的格式。

maya库的一个主要特点是其智能日期时间解析能力。它可以自动解析各种日期时间字符串,如2019-01-01、01/01/2019、2019年1月1日等,无需指定解析格式。如果解析失败,它会自动尝试使用其他可能的格式进行解析,从而提高了解析成功的概率。

在使用maya库时,需要先安装它,可以通过pip来安装。安装完成后,就可以在Python程序中导入maya库,并开始使用它提供的各种功能了。

https://github.com/timofurrer/maya

5. Chardet

chardet是一个Python编码检测库,它可以自动检测给定文本的编码方式。这个工具库可以用于识别各种编码,包括ASCII、UTF-8、GB2312等等。如果你有一个文本文件或者一个字符串,但是不确定它的编码方式,chardet就可以帮你解决这个问题。

下面是一个简单的入门示例,演示如何使用chardet库来检测一个字符串的编码方式:

import chardet

# 待检测的字符串
text = '这是一段中文文本'

# 检测编码方式
result = chardet.detect(text.encode())

# 输出结果
print(result)

在这个示例中,我们首先将一个中文文本字符串text进行编码,并将其作为参数传递给detect方法,用来检测该字符串的编码方式。然后,我们将检测结果输出到控制台。

chardet库还提供了一些其他的API,比如UniversalDetector类,可以用来检测一个文件的编码方式。此外,还有一些配置选项可以用来调整检测的精度和速度。

需要注意的是,由于chardet库是基于统计方法进行编码检测的,因此可能会出现一定的误判情况。在某些情况下,可能需要使用人工的方式来确认编码方式。

在使用chardet库时,需要先安装它,可以通过pip来安装。安装完成后,就可以在Python程序中导入chardet库,并开始使用它提供的各种功能了。

https://github.com/chardet/chardet

6. Ultrajson

ultrajson是一个Python的JSON编解码器,它提供了非常快速和高效的JSON编解码能力。它的实现使用C和Python的混合编程方式,兼具高性能和易用性,是Python应用中处理JSON数据的一个非常好的选择。

下面是一个简单的入门示例,演示如何使用ultrajson库来将Python数据结构转换为JSON格式:

import ujson as json

# 定义一个Python数据结构
data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 将数据结构转换为JSON格式
json_data = json.dumps(data)

# 输出JSON格式的数据
print(json_data)

在这个示例中,我们首先定义了一个Python数据结构data,然后使用dumps方法将其转换为JSON格式。最后,我们将JSON格式的数据输出到控制台。

与Python标准库中的json模块相比,ultrajson库提供了更快的JSON编解码速度。此外,ultrajson库还提供了一些其他的高级功能,比如对Unicode字符的支持、对二进制数据的支持等等。

需要注意的是,由于ultrajson库并不是标准的Python库,因此需要先安装它,可以通过pip来安装。安装完成后,就可以在Python程序中导入ultrajson库,并开始使用它提供的各种功能了。

https://github.com/ultrajson/ultrajson

7. Flanker

flanker是一个Python工具库,提供了各种电子邮件地址验证和解析功能。它可以用来解析和规范化电子邮件地址,提取电子邮件地址的组成部分,验证电子邮件地址的有效性,并进行反垃圾邮件(anti-spam)处理等等。

下面是一个简单的入门示例,演示如何使用flanker库来解析和验证电子邮件地址:

from flanker.addresslib import address

# 定义一个电子邮件地址
email = 'john.doe@example.com'

# 使用flanker库来解析电子邮件地址
parsed_email = address.parse(email)

# 输出电子邮件地址的各个组成部分
print('Username:', parsed_email.mailbox)
print('Domain:', parsed_email.hostname)

# 验证电子邮件地址的有效性
if address.validate_address(email):
    print('Valid email address')
else:
    print('Invalid email address')

在这个示例中,我们首先定义了一个电子邮件地址email,然后使用flanker库中的address.parse方法来解析这个电子邮件地址。address.parse方法会将电子邮件地址解析成一个Address对象,该对象包含了电子邮件地址的各个组成部分。我们通过Address对象的mailbox属性和hostname属性来获取电子邮件地址的用户名和域名。

接下来,我们使用flanker库中的address.validate_address方法来验证电子邮件地址的有效性。如果电子邮件地址有效,就输出Valid email address,否则输出Invalid email address。

需要注意的是,flanker库可以处理多种不同格式的电子邮件地址,包括RFC 5322格式、RFC 6531格式、RFC 6532格式等等。如果您需要在Python应用中处理电子邮件地址,可以考虑使用flanker库来简化这个过程。

https://github.com/mailgun/flanker

结束

在本文中,我们介绍了一些常用的Python工具库,包括EasyOCR、websockets、gspread、maya、chardet和flanker。这些工具库可以帮助Python开发者更轻松地完成各种任务,提高开发效率和代码质量。如果你正在开发一个Python应用程序,不妨考虑使用其中的一些工具库来简化你的工作。当然,这些工具库只是Python生态系统中的一小部分,还有很多其他有用的工具库等待你去发现和使用。

今天的分享就到这里,希望对你有所帮助。如果你知道任何其他高效的 Python 工具库,欢迎你在评论区补充。感谢你的阅读,如果你喜欢我的分享,别忘了点赞转发,让更多的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。

相关推荐

《Queendom》宣布冠军!女团MAMAMOO四人激动落泪

网易娱乐11月1日报道据台湾媒体报道,南韩女团竞争回归的生死斗《Queendom》昨(10/31)晚播出大决赛,并以直播方式进行,6组女团、女歌手皆演唱新歌,并加总前三轮的赛前赛、音源成绩与直播现场投...

正确复制、重写别人的代码,不算抄袭

我最近在一篇文章提到,工程师应该怎样避免使用大量的库、包以及其他依赖关系。我建议的另一种方案是,如果你没有达到重用第三方代码的阈值时,那么你就可以自己编写代码。在本文中,我将讨论一个在重用和从头开始编...

HTML DOM tr 对象_html event对象

tr对象tr对象代表了HTML表格的行。HTML文档中出现一个<tr>标签,就会创建一个tr对象。tr对象集合W3C:W3C标签。集合描述W3Ccells返回...

JS 打造动态表格_js如何动态改变表格内容

后台列表页最常见的需求:点击表头排序+一键全选。本文用原生js代码实现零依赖方案,涵盖DOM查询、排序算法、事件代理三大核心技能。效果速览一、核心思路事件入口:为每个<th>绑...

连肝7个晚上,总结了66条计算机网络的知识点

作者|哪吒来源|程序员小灰(ID:chengxuyuanxiaohui)计算机网络知识是面试常考的内容,在实际工作中经常涉及。最近,我总结了66条计算机网络相关的知识点。1、比较http0....

Vue 中 强制组件重新渲染的正确方法

作者:MichaelThiessen译者:前端小智来源:hackernoon有时候,依赖Vue响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的...

为什么100个前端只有1人能说清?浏览器重排/重绘深度解析

面试现场的"致命拷问""你的项目里做过哪些性能优化?能具体讲讲重排和重绘的区别吗?"作为面试官,我在秋招季连续面试过100多位前端候选人,这句提问几乎成了必考题。但令...

HTML DOM 介绍_dom4j html

HTMLDOM(文档对象模型)是一种基于文档的编程接口,它是HTML和XML文档的编程接口。它可以让开发人员通过JavaScript或其他脚本语言来访问和操作HTML和XML文档...

JavaScript 事件——“事件流和事件处理程序”的注意要点

事件流事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而NetscapeCommunicator的事件流是事件捕获流。事件冒泡即事件开始时由最具体的元素接收,然后逐级向上传播到较为不...

探秘 Web 水印技术_水印制作网页

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

国外顶流网红为流量拍摄性侵女学生?仅被封杀三月,回归仍爆火

曾经的油管之王,顶流网红DavidDobrik复出了。一切似乎都跟他因和成员灌酒性侵女学生被骂到退网之前一样:住在950万美元的豪宅,开着20万美元的阿斯顿马丁,每条视频都有数百万观看...人们仿佛...

JavaScript 内存泄漏排查方法_js内存泄漏及解决方法

一、概述本文主要介绍了如何通过Devtools的Memory内存工具排查JavaScript内存泄漏问题。先介绍了一些相关概念,说明了Memory内存工具的使用方式,然后介绍了堆快照的...

外贸独立站,网站优化的具体内容_外贸独立站,网站优化的具体内容有哪些

Wordpress网站优化,是通过优化代码、数据库、缓存、CSS/JS等内容,提升网站加载速度、交互性和稳定性。网站加载速度,是Google搜索引擎的第一权重,也是SEO优化的前提。1.优化渲染阻塞。...

这8个CSS工具可以提升编程速度_css用什么编译器

下面为大家推荐的这8个CSS工具,有提供函数的,有提供类的,有提取代码的,还有收集CSS的统计数据的……请花费两分钟的时间看完这篇文章,或许你会找到意外的惊喜,并且为你的编程之路打开了一扇新的大门。1...

vue的理解-vue源码 历史 简介 核心特性 和jquery区别 和 react对比

一、从历史说起Web是WorldWideWeb的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解石器时代文明时代工业革命时代百花齐放时代石器时代石器时代指的就是我们的静态网页,可以欣...