脚本专家 发表于 2026-8-29 12:00:01

Python标准库与第三方库知识点总结:time、random、re、j

在Python生态里,库分为标准库和第三方库。标准库随解释器内置,直接import即可;第三方库需要先用pip install安装。本文梳理time/datetime、random、re三个标准库,以及PyInstaller、jieba两个常用第三方库的核心API、参数含义和代码示例,便于日常开发快速查阅。

一、标准库:time与datetime

time模块面向时间戳和底层计时,支持获取当前时间、延时等待。datetime模块提供更高级的日期时间对象,适合做格式化和日期计算。常用方法包括:

time.time()返回浮点时间戳(秒);time.sleep(seconds)让程序暂停指定秒数,seconds可以是0.5这样的浮点数。datetime.datetime.now()得到当前日期时间对象;strftime(format)把对象按格式字符串输出,strptime(string, format)则把字符串解析成对象。常见的format写法如"%Y-%m-%d %H:%M:%S"表示年-月-日 时:分:秒。

典型用途是日志记录、性能耗时统计、定时任务。例如:


import time
from datetime import datetime

start_time = time.time()
time.sleep(1)# 暂停1秒
end_time = time.time()
print(f"执行耗时: {end_time - start_time:.2f} 秒")

now = datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"当前时间: {formatted}")

parsed_date = datetime.strptime("2023-10-01", "%Y-%m-%d")
print(f"解析日期: {parsed_date}")


二、标准库:random随机库

random模块用于生成伪随机数,支持随机浮点数、随机整数、随机选取和洗牌。伪随机序列可以通过种子(seed)固定,方便复现实验结果。random.seed(seed)中seed为整数或None,None时基于系统时间。

random.random()返回闭区间的整数,注意a必须不大于b;random.choice(sequence)从列表或元组中随机取出一个元素;random.shuffle(sequence)会原地打乱序列顺序。

示例:


import random

random.seed(42)# 固定随机种子,复现结果

rand_float = random.random()
rand_int = random.randint(1, 10)
print(f"随机浮点数: {rand_float}, 随机整数: {rand_int}")

items =
chosen = random.choice(items)
random.shuffle(items)
print(f"随机选择: {chosen}, 打乱后序列: {items}")


三、标准库:re正则表达式

re模块负责文本模式匹配,常用函数有search、match、findall、sub、split。search扫描整个字符串返回第一个匹配的Match对象;match只从字符串起始位置匹配;findall返回所有匹配项的列表;sub用替换值或函数替换匹配部分;split按模式切分字符串。

几个基础语法:点号.匹配除换行符外的任意字符;\d匹配数字,等价于;*表示前一个字符出现0次或多次;+表示出现1次或多次;方括号[]定义字符集,如匹配小写字母。使用原始字符串r"..."写正则,避免反斜杠转义问题。

应用场景包含数据清洗、日志解析、表单验证。下面的例子演示邮箱搜索、数字提取和电话格式替换:


import re

text = "联系邮箱: user@example.com, 电话: 123-4567"

# 搜索邮箱
email_match = re.search(r'[\w\.-]+@[\w\.-]+', text)
if email_match:
    print(f"邮箱: {email_match.group()}")

# 查找所有数字
numbers = re.findall(r'\d+', text)
print(f"所有数字: {numbers}")

# 替换电话格式,移除连字符
new_text = re.sub(r'(\d{3})-(\d{4})', r'\1\2', text)
print(f"替换后文本: {new_text}")


四、第三方库:PyInstaller打包工具

PyInstaller用于把Python脚本打包成独立可执行文件,例如Windows下的.exe,支持跨平台分发。常用命令行参数包括:

pyinstaller script.py 是基本打包命令。
--onefile 生成单个可执行文件,不加则生成文件夹。
--windowed 隐藏控制台窗口,适合GUI应用。
--icon=icon.ico 自定义程序图标。
--add-data 添加额外数据文件。

安装与打包命令如下(终端中执行,不是Python代码):


pip install pyinstaller
pyinstaller --onefile --windowed your_script.py


注意:打包时Python环境和依赖库的版本差异可能导致可执行文件在不同机器上表现不同,建议在目标平台环境相近的系统中打包。

五、第三方库:jieba中文分词

jieba是中文文本分词库,支持精确模式、全模式和搜索引擎模式。jieba.cut(sentence, cut_all=False)返回生成器;jieba.lcut(sentence, cut_all=False)直接返回列表。cut_all=True为全模式,会输出所有可能的词,比较粗糙;默认False为精确模式,按最合理方式切分。

还可以用jieba.add_word(word, freq=None, tag=None)向词典添加自定义词,改善专有名词识别。jieba.analyse.extract_tags(sentence, topK=20)抽取关键词,topK控制返回数量。

安装和示例:


pip install jieba



import jieba
import jieba.analyse

text = "自然语言处理是人工智能的重要分支"

# 精确模式分词
words = jieba.lcut(text)
print(f"精确分词: {words}")

# 全模式分词
words_full = jieba.lcut(text, cut_all=True)
print(f"全模式分词: {words_full}")

# 关键词提取
keywords = jieba.analyse.extract_tags(text, topK=2)
print(f"关键词: {keywords}")


六、总结

标准库中的time、datetime、random、re解决时间处理、随机数和文本匹配问题,开箱即用,适合绝大多数基础脚本。第三方库PyInstaller负责应用分发,jieba专攻中文分词。实际开发中优先查官方文档,结合项目需求选择对应库。先运行最小示例,再逐步扩展参数和边界处理,是掌握这些库最有效的路径。

热心网友4 发表于 2026-8-29 19:00:00

Re: Python标准库与第三方库知识点总结:time、random、re、j

楼主的总结很实用,正好最近在写脚本时总记混 time 和 datetime 的用法,这下可以收藏起来当速查表了。尤其是 random.seed 固定随机数那段,做数据实验时太需要了。re 模块的示例也很清楚,之前经常忘了用原始字符串,导致反斜杠转义出各种问题。 PyInstaller 和 jieba 这两块我平时用得少,但楼主的命令和参数说明得很直观,以后打包和做中文分词可以直接参考。要是能再补充一下 PyInstaller 打包后常见坑的解决办法(比如缺模块),或者 jieba 自定义词典的格式,那就更完美了。感谢分享!

热心网友4 发表于 2026-8-29 19:00:00

Re: Python标准库与第三方库知识点总结:time、random、re、j

总结得很全面,正好最近在学正则和打包,这个速查表格很实用。就是有个小疑问:PyInstaller打包后exe体积一般比较大,有没有什么减小体积的方法?另外jieba分词里自定义词的频率参数freq一般怎么设比较合适?

热心网友4 发表于 2026-8-29 19:00:00

Re: Python标准库与第三方库知识点总结:time、random、re、j

收藏了,总结得很实用。特别是 re 模块那块,原始字符串和分组替换的示例很直观,日常写日志解析正好能直接套用。有个小问题想请教下:jieba 的精确模式和全模式除了返回结果不同,在性能上差距大吗?之前处理长文本时感觉全模式生成词会多很多,怕影响速度。
页: [1]
查看完整版本: Python标准库与第三方库知识点总结:time、random、re、j