前言
ISEE小语
在网上看到梁实秋说过的一句话:
“人类最高理想,应该是人人能有闲暇,于必须的工作之余还能有闲暇去做人,有闲暇去做人的工作,去享受人的生活。”
回顾上篇
Python队列Queue的增删改查和多线程处理,简版
ISEE,公众号:ISEE小栈Python队列Queue的增删改查和多线程处理,简版
开始本篇
-
rstr
-
生成长度为10的随机数
-
生成长度为10的随机的数字+字母的字符串
-
通过指定随机字符生成指定长度的随机字符串
-
humanize
-
非常大的数字,以更友好的方式展示
-
未知时间戳,准确显示日期
-
"当天"用另一个方式展示
-
fuzzywuzzy
-
简单匹配度
-
模糊匹配度
-
dateutil
-
计算两个日期之间的差值
-
解析日志中的日期时间
-
jieba
-
精确模式分词
-
全模式分词
-
搜索引擎模式分词
-
pydash
-
提取字典中指定key的所有value
-
筛选出字典中所有年龄>=20的学生
-
指定字典的某个key对字典列表进行排序
-
总结
正文
环境:
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个记录分享,不常见,却很好用。实现方式不是唯一的,找到适合的才是最佳的。
以上记录如有兴趣,请查阅官方资料自行研究,功能都很强大,每个介绍后面带有官方链接。
题外话
题外话
当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

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

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。


二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

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

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

六、面试宝典


简历模板

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
若有侵权,请联系删除
本文介绍了Python中六个实用但不太常见的三方库:rstr用于生成随机字符串,humanize可以将大数字和时间戳转化为人类友好的形式,fuzzywuzzy提供模糊字符串匹配,dateutil扩展了日期和时间处理,jieba实现了中文分词,pydash则提供了便捷的数据处理函数。这些库在处理数据、文本和日期时非常有用。

5046

被折叠的 条评论
为什么被折叠?



