查看: 355|回复: 0

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

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在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"表示年-月-日 时:分:秒。

典型用途是日志记录、性能耗时统计、定时任务。例如:
  1. import time
  2. from datetime import datetime
  3. start_time = time.time()
  4. time.sleep(1)  # 暂停1秒
  5. end_time = time.time()
  6. print(f"执行耗时: {end_time - start_time:.2f} 秒")
  7. now = datetime.now()
  8. formatted = now.strftime("%Y-%m-%d %H:%M:%S")
  9. print(f"当前时间: {formatted}")
  10. parsed_date = datetime.strptime("2023-10-01", "%Y-%m-%d")
  11. 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)会原地打乱序列顺序。

示例:
  1. import random
  2. random.seed(42)  # 固定随机种子,复现结果
  3. rand_float = random.random()
  4. rand_int = random.randint(1, 10)
  5. print(f"随机浮点数: {rand_float}, 随机整数: {rand_int}")
  6. items = [1, 2, 3, 4, 5]
  7. chosen = random.choice(items)
  8. random.shuffle(items)
  9. 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"..."写正则,避免反斜杠转义问题。

应用场景包含数据清洗、日志解析、表单验证。下面的例子演示邮箱搜索、数字提取和电话格式替换:
  1. import re
  2. text = "联系邮箱: user@example.com, 电话: 123-4567"
  3. # 搜索邮箱
  4. email_match = re.search(r'[\w\.-]+@[\w\.-]+', text)
  5. if email_match:
  6.     print(f"邮箱: {email_match.group()}")
  7. # 查找所有数字
  8. numbers = re.findall(r'\d+', text)
  9. print(f"所有数字: {numbers}")
  10. # 替换电话格式,移除连字符
  11. new_text = re.sub(r'(\d{3})-(\d{4})', r'\1\2', text)
  12. print(f"替换后文本: {new_text}")
复制代码

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

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

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

安装与打包命令如下(终端中执行,不是Python代码):
  1. pip install pyinstaller
  2. 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控制返回数量。

安装和示例:
  1. pip install jieba
复制代码
  1. import jieba
  2. import jieba.analyse
  3. text = "自然语言处理是人工智能的重要分支"
  4. # 精确模式分词
  5. words = jieba.lcut(text)
  6. print(f"精确分词: {words}")
  7. # 全模式分词
  8. words_full = jieba.lcut(text, cut_all=True)
  9. print(f"全模式分词: {words_full}")
  10. # 关键词提取
  11. keywords = jieba.analyse.extract_tags(text, topK=2)
  12. print(f"关键词: {keywords}")
复制代码

六、总结

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-8-29 13:50 , Processed in 0.026609 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部