在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()返回[0, 1)区间的浮点数;random.randint(a, b)返回[a, b]闭区间的整数,注意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 = [1, 2, 3, 4, 5]
- 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-9];*表示前一个字符出现0次或多次;+表示出现1次或多次;方括号[]定义字符集,如[a-z]匹配小写字母。使用原始字符串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控制返回数量。
安装和示例:
- 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专攻中文分词。实际开发中优先查官方文档,结合项目需求选择对应库。先运行最小示例,再逐步扩展参数和边界处理,是掌握这些库最有效的路径。 |