文本数据清洗需系统处理伪空值、编码异常、格式不一及非结构信息提取:先strip+replace统一空值,用utf-8-sig读取去bom,正则清理控制字符,translate归一标点,小写/空格/数字标准化,正则或dateutil提取结构化字段。

文本数据清洗是Python数据分析中最常遇到的环节,核心在于把杂乱、不规范、含噪声的原始文本变成结构清晰、格式统一、可直接用于分析或建模的数据。
处理缺失与空值:别只用dropna
文本字段中常见空字符串、纯空白(空格/制表符/换行符)、None、NaN等“看似空实则难识别”的情况。直接df.dropna(subset=['text'])可能漏掉' \n'这类数据。
- 先用str.strip()清除首尾空白,再判断是否为空:
df['text'] = df['text'].str.strip().replace('', pd.NA) - 对object类型列,统一转为字符串再处理,避免AttributeError:
df['text'] = df['text'].astype(str).str.strip() - 用df['text'].apply(lambda x: len(str(x).strip()) == 0)精准定位伪空值
统一编码与特殊符号清理
爬虫或跨系统导出的文本常混入不可见字符(如\u200b零宽空格、\ufeffBOM头)、全角标点、乱码符号,影响分词和匹配。
- 读取CSV时指定encoding='utf-8-sig'自动去除BOM
- 用正则批量清理控制字符和多余符号:
re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]', '', text) - 半角/全角标点归一化:用str.translate()配合映射表,例如将全角逗号、句号转为英文标点
标准化大小写、空格与数字格式
用户输入随意性强,同一含义可能写作“iPhone13”、“iphone 13”、“IPHONE-13”,影响去重和分组。
Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识
立即学习“Python免费学习笔记(深入)”;
- 基础统一:小写+单空格替换多空格+去前后空:
text.lower().replace('\xa0', ' ').split() and ' '.join(...) - 数字标准化:用re.sub(r'(\d+)\s*([kK]g|[mM]l|[cC]m)', r'\1\2', text)合并数量与单位
- 品牌/产品名缩写补全(如“vsco”→“VSCO”、“ios”→“iOS”)可借助自定义词典+str.replace()或正则替换
提取关键信息:从非结构文本到结构字段
地址、日期、手机号、价格等常藏在一段描述里,靠简单切分无法稳定获取。
- 用命名捕获组写清晰正则:
re.search(r'电话[::]?\s*(?P<phone>\d{11})', text)</phone>,返回字典便于构造新列 - 日期识别推荐dateutil.parser.parse()配合errors='coerce'容错解析,再转为标准datetime64
- 地址拆分可用jieba(中文)或usaddress(英文地址),比正则更鲁棒
文本清洗没有银弹,关键是根据业务场景设计检查清单,把规则写成可复用的函数,配合apply或assign链式调用,让每一步都可验证、可回溯。









