大家好,我是一名深耕人工智能领域的开发者。在前几篇进阶内容中,我们陆续学习了闭包装饰器、多线程多进程、网络编程等核心内容,今天我们继续完成 Python 进阶语法的收尾学习,聚焦迭代器、生成器、正则表达式三大核心语法。

这三类语法在 AI 开发中有着极高的实用价值:迭代器与生成器可以实现惰性加载数据,在处理超大训练数据集时节省大量内存;正则表达式则是数据清洗、文本预处理、脏数据过滤的必备工具,是 NLP 自然语言处理、文本类 AI 项目的基础能力。本文全程无代码,仅从概念、逻辑、使用场景与规则进行讲解,适合作为博客分享与学习笔记留存。

一、迭代器:惰性数据遍历的基础

1.1 迭代器核心概述

迭代器是 Python 中实现惰性加载数据的基础类型,其核心规则为:如果一个类实现了指定的两个魔法方法,那么该类就是迭代器类,由该类创建的对象即为迭代器对象。

迭代器采用惰性加载的方式获取数据,不会一次性将所有数据加载到内存,而是遍历一次、获取一次数据,适合处理海量、超大序列数据,缺点是相比生成器,手动实现逻辑较为繁琐。

1.2 迭代器核心执行逻辑

当我们使用循环遍历迭代器对象时,每完成一次遍历,程序会自动调用迭代器的对应方法,逐步返回数据,实现边遍历、边取值的效果,无需提前加载全部数据。

二、生成器:极简高效的惰性数据生成工具

2.1 生成器核心概述

生成器是迭代器的简化实现版本,同样基于用户传入的规则获取数据,核心特点是惰性加载、分批生成数据,不会一次性将所有数据加载至内存,而是用一批、生成一批,极大节省内存开销,是处理海量 AI 数据集的常用工具。

2.2 生成器实现方式

生成器有两种主流实现方式:

  1. 推导式写法:通过简洁的语法直接创建生成器对象,语法简洁、上手快速;
  2. 函数写法:借助 yield 关键字实现,在函数中使用 yield 关键字返回数据,调用函数后即可得到生成器对象。

2.3 生成器核心作用

  1. 结合循环函数使用,实现数据的分批产出;
  2. 向生成器中添加数据,实现数据动态处理;
  3. 以惰性方式批量获取数据,典型场景为批量获取大型文本、数据集、海量日志数据等。

2.4 典型应用场景

生成器最经典的实战场景为批量获取海量数据,例如批量读取大型文本文件、分批加载 AI 训练样本、流式读取日志数据等,避免一次性加载全部数据导致内存溢出。

三、正则表达式:文本处理与数据清洗核心工具

3.1 正则表达式概述

正则表达式全称为 Regular Expression,简称正则,本质是一套匹配指定规则字符串的语法规则,可以通过自定义规则,快速完成文本的校验、匹配、替换、过滤等操作,是文本数据清洗、脏数据剔除、信息提取的核心工具。

3.2 正则表达式核心作用

  1. 正则校验:判断字符串是否符合指定格式规则;
  2. 正则匹配:从文本中提取符合规则的目标内容;
  3. 正则替换:将文本中符合规则的内容替换为指定内容;
  4. 正则过滤:剔除文本中不符合规则的无效内容。

3.3 Python 中正则的基础使用逻辑

在 Python 中使用正则表达式,遵循固定的使用逻辑:

  1. 导入正则相关模块;
  2. 调用模块对应方法,完成校验、匹配、替换等操作;
  3. 根据方法返回结果,判断是否匹配成功,获取最终校验结果。

3.4 正则常用语法规则

正则的核心由四类规则组成,覆盖绝大多数文本处理场景:

  1. 单个字符匹配:用于匹配单个字符,包含任意字符、指定字符集合、非指定字符集合、数字、非数字、空白字符、非空白字符、字母数字下划线、非字母数字下划线等规则;
  2. 数量词匹配:用于控制匹配字符的出现次数,包含匹配 0 次或 1 次、匹配 0 次或多次、匹配 1 次或多次、匹配指定次数、匹配至少 n 次、匹配 n 到 m 次等规则;
  3. 开头与结尾匹配:用于限定匹配内容必须出现在字符串开头或结尾;
  4. 分组匹配:用于将匹配内容分组提取,支持自定义分组名称、引用指定分组内容等高级用法。

3.5 正则实战案例

正则表达式在实际开发中高频使用场景包含:

  1. 手机号格式校验;
  2. 邮箱格式校验;
  3. 筛选指定关键词文本;
  4. 提取文本中的 QQ 号、身份证号等关键信息;
  5. 校验 HTML 标签格式等。

四、逻辑图

更多推荐