python中不常见却强大并好用的6个三方库,精简版

本文介绍了Python中六个实用但不太常见的三方库:rstr用于生成随机字符串,humanize可以将大数字和时间戳转化为人类友好的形式,fuzzywuzzy提供模糊字符串匹配,dateutil扩展了日期和时间处理,jieba实现了中文分词,pydash则提供了便捷的数据处理函数。这些库在处理数据、文本和日期时非常有用。
部署运行你感兴趣的模型镜像

前言

ISEE小语

在网上看到梁实秋说过的一句话:

“人类最高理想,应该是人人能有闲暇,于必须的工作之余还能有闲暇去做人,有闲暇去做人的工作,去享受人的生活。”


回顾上篇

Python队列Queue的增删改查和多线程处理,简版

ISEE,公众号:ISEE小栈Python队列Queue的增删改查和多线程处理,简版

开始本篇

  1. rstr

  2. 生成长度为10的随机数

  3. 生成长度为10的随机的数字+字母的字符串

  4. 通过指定随机字符生成指定长度的随机字符串

  5. humanize

  6. 非常大的数字,以更友好的方式展示

  7. 未知时间戳,准确显示日期

  8. "当天"用另一个方式展示

  9. fuzzywuzzy

  10. 简单匹配度

  11. 模糊匹配度

  12. dateutil

  13. 计算两个日期之间的差值

  14. 解析日志中的日期时间

  15. jieba

  16. 精确模式分词

  17. 全模式分词

  18. 搜索引擎模式分词

  19. pydash

  20. 提取字典中指定key的所有value

  21. 筛选出字典中所有年龄>=20的学生

  22. 指定字典的某个key对字典列表进行排序

  23. 总结


正文

环境:

Pycharm

Python 3.9.16


rstr

生成随机字符串,这个时候,大多会想到用random,本次介绍另一个更加亲民的,名叫rstr。

rstr是一个辅助模块,用于轻松生成各种类型的随机字符串。它可以用于模糊测试、生成虚拟数据或其他应用程序。

安装:pip install rstr==3.2.1

导入:import rstr

eg:

1、生成长度为10的随机数

result = rstr.digits(10)``print(result)``   ``# 结果:``7672918483

(左右滑动查看完整代码)

其中,rstr.digits(),如果没有指定数量,那默认是随机生成1-10个之间的数字字符串。

2、生成长度为10的随机的数字+字母的字符串

result = rstr.word(10)``print(result)``   ``# 结果:``diqcv9Ey0a

(左右滑动查看完整代码)

其中,rstr.word(),如果没有指定数量,那默认是随机生成1-10个之间的数字+字母的字符串。

3、通过指定随机字符,生成指定长度的随机字符串

result = rstr.rstr('abc', 5)``print(result)``   ``# 结果:``aacaa

(左右滑动查看完整代码)

结果就是永远以abc这三个字母,按长度为5随机生成。

[更多] https://pypi.org/project/rstr/

humanize

这个比较亲民,它的主要目的是更好地呈现数据和信息,比如时间戳转换为"几小时前", “昨天”, "一周前"等。再比如数字,并将它们“人性化”成人类可读的短语,如“1000亿”

安装:pip install humanize==4.8.0

导入:import humanize

eg:

1、非常大的数字,以更友好的方式展示

result = humanize.intword(100000000)``print(result)``   ``# 结果:``100.0 million

(左右滑动查看完整代码)

2、未知时间戳,准确显示日期

timestamp = 1695794106``date_time = datetime.datetime.fromtimestamp(timestamp)``result = humanize.naturalday(date_time)``print(result)``   ``# 结果:``Sep 27

(左右滑动查看完整代码)

3、"当天"用另一个方式展示

result = humanize.naturalday(datetime.datetime.now())``print(result)``   ``# 结果:``today``   

(左右滑动查看完整代码)

[更多] https://pypi.org/project/humanize/

fuzzywuzzy

它是一个简单易用的模糊字符串匹配工具包,它主要依据Levenshtein Distance算法来计算两个序列之间的差异。Levenshtein Distance算法又称为Edit Distance算法,是指两个字符串之间由一个转成另一个所需的最少编辑操作次数,其中包括替换一个字符、插入一个字符和删除一个字符等操作。输出是一个比率,完全匹配是100,完全不匹配是0。

安装:pip install fuzzywuzzy==0.18.0

导入:from fuzzywuzzy import fuzz

eg:

1、简单匹配度

result = fuzz.ratio("this is a test", "this is a test!")``print(result)``   ``# 结果:``97

(左右滑动查看完整代码)

其中,也可以对中文进行对比

result = fuzz.ratio("您好,中国", "您好,和平")``print(result)``   ``# 结果:``60

(左右滑动查看完整代码)

2、模糊匹配度

result = fuzz.partial_ratio("this is a test", "this is a test!")``print(result)``   ``# 结果:``100

(左右滑动查看完整代码)

同上,也可以对中文进行对比

result = fuzz.partial_ratio("您好,中国", "您好,中国!")``print(result)``   ``# 结果:``100

(左右滑动查看完整代码)

[更多] https://pypi.org/project/fuzzywuzzy/

dateutil

dateutil模块提供了对Python中可用的标准datetime模块的强大扩展。它提供了许多有用的功能,以简化日期和时间的处理。

**安装:pip install python-dateutil==2.8.2
**

导入:

**from dateutil.parser import parse
**

from dateutil.relativedelta import relativedelta

eg:

1、计算两个日期之间的差值

from dateutil.relativedelta import relativedelta``from datetime import datetime``   ``date1 = datetime(2023, 10, 8)``date2 = datetime(2023, 10, 10)``result = relativedelta(date1, date2).days``   ``print(result)``   ``# 结果:``-2

(左右滑动查看完整代码)

2、解析日志中的日期时间

from dateutil.parser import parse``   ``log_msg = 'DEBUG 2023-10-09T14:00:01 Download is beginning..'``# log_msg = '[09/Oct/2023 14:14:14] Download is beginning.'``log_time = parse(log_msg, fuzzy=True)``print(log_time)``   ``   ``# 结果:``2023-10-09 14:00:01

(左右滑动查看完整代码)

其中,例子中的两种日志格式,亲测均可以

[更多] https://pypi.org/project/python-dateutil/

**jieba
**

jieba是Python中一个非常强大的中文分词库,它可以帮助你处理中文文本,并进行分词处理。这在处理中文文本分析时非常有用。

安装:pip install jieba==0.42.1

**导入:import jieba
**

eg:

1、精确模式分词

毋庸置疑,精确模型即将文本精确地切分开,这种方式适合文本分析

result = jieba.cut("本次进行精确模式分词!", cut_all=False)``print("结果: " + "/ ".join(result))``# 结果``结果: 本次/ 进行/ 精确/ 模式/ 分词/ !

(左右滑动查看完整代码)

2、全模式分词

把文本中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义

result = jieba.cut("比如本次方案进行全模式分词!", cut_all=True)``print("全模式分词: " + "/ ".join(result))``# 结果``全模式分词: 比如/ 本次/ 次方/ 方案/ 进行/ 全/ 模式/ 分词/ !

(左右滑动查看完整代码)

注意参数cut_all,默认情况下是False,即为精确模式分词

3、搜索引擎模式

把文本在精确模式的基础上,对长词再次切分。提高召回率,适合用于搜索引擎分词

result = jieba.cut_for_search("比如本次方案进行搜索引擎模式分词!")``print("结果: " + ", ".join(result))``# 结果``结果: 比如, 本次, 方案, 进行, 搜索, 索引, 引擎, 搜索引擎, 模式, 分词, !

(左右滑动查看完整代码)

[更多] https://pypi.org/project/jieba/

**pydash
**

它提供了许多便捷且功能强大的函数,用于处理和操作列表、字典、字符串等数据类型

安装:pip install pydash==7.0.6

**导入:from pydash import *
**

eg:

1、提取字典中指定key的所有value

class_data = [{'Student': 'Tom', 'Age': 20}, {'Student': 'Bob', 'Age': 18}, {'Student': 'Charlie', 'Age': 21}, {'Student': 'Lily', 'Age': 19}]``# 提取年龄``age = map_(class_data, 'Age')``print(age)``# 结果``[20, 18, 21, 19]``   ``# 提取学生姓名``student = map_(class_data, 'Student')``print(student)``# 结果``['Tom', 'Bob', 'Charlie', 'Lily']

(左右滑动查看完整代码)

2、筛选出字典中所有年龄>=20的学生

class_data = [{'Student': 'Tom', 'Age': 20}, {'Student': 'Bob', 'Age': 18}, {'Student': 'Charlie', 'Age': 21}, {'Student': 'Lily', 'Age': 19}]``students = filter_(class_data, lambda class_data: class_data['Age'] >= 20)``print(students)``   ``# 结果``[{'Student': 'Tom', 'Age': 20}, {'Student': 'Charlie', 'Age': 21}]

(左右滑动查看完整代码)

3、指定字典的某个key对字典列表进行排序

class_data = [{'Student': 'Tom', 'Age': 20}, {'Student': 'Bob', 'Age': 18}, {'Student': 'Charlie', 'Age': 21}, {'Student': 'Lily', 'Age': 19}]``# 年龄从小到大排序``sorted_class = sort_by(class_data, 'Age')``print(sorted_class)``# 结果``[{'Student': 'Bob', 'Age': 18}, {'Student': 'Lily', 'Age': 19}, {'Student': 'Tom', 'Age': 20}, {'Student': 'Charlie', 'Age': 21}]``   ``   ``# 年龄从大到小排序``sorted_class = sort_by(class_data, 'Age', reverse=True)``print(sorted_class)``# 结果``[{'Student': 'Charlie', 'Age': 21}, {'Student': 'Tom', 'Age': 20}, {'Student': 'Lily', 'Age': 19}, {'Student': 'Bob', 'Age': 18}]

(左右滑动查看完整代码)

总结

最近实际运用中所涉及到的三方库,取6个记录分享,不常见,却很好用。实现方式不是唯一的,找到适合的才是最佳的。

以上记录如有兴趣,请查阅官方资料自行研究,功能都很强大,每个介绍后面带有官方链接。

题外话

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值