正则表达式在python数据清洗中非常实用,能有效处理脏数据。主要方法包括:1. 清除无意义字符,使用re.sub()替换多余空白符或不可见字符;2. 提取关键信息,如电话号码和邮箱,通过模式匹配精准捞出结构化内容;3. 替换不规范格式,将不同格式统一为标准形式,如时间标准化为“yyyy-mm-dd”;4. 掌握常用技巧,如匹配中文、字母数字组合及灵活运用贪婪与非贪婪匹配,提升数据清洗效率与准确性。
在Python中处理脏数据时,正则表达式(Regular Expression,简称regex)是一个非常实用的工具。它能帮助我们从混乱的数据中提取、替换或过滤出有用的信息。尤其是面对文本类数据时,掌握一些基本的正则用法,可以大大提升数据清洗的效率。
下面分享几个实战中常用的方法,帮你快速上手用正则清洗脏数据。
很多时候,原始数据中夹杂着各种多余的空白符或者不可见字符,比如多个空格、制表符\t、换行符\n等,这些都会影响后续处理。
立即学习“Python免费学习笔记(深入)”;
建议做法:
使用re.sub()方法,将这些无意义字符统一替换为空或单个空格:
import re text = " 这是一段\t不规整的\n文本。 " cleaned_text = re.sub(r'\s+', ' ', text).strip()
这样就能把所有空白符统一成一个空格,并去掉头尾多余的部分。
如果你只想清除特定字符,比如只删掉换行符,也可以写得更具体一点:
cleaned_text = re.sub(r'\n', '', text)
有时候我们需要从一段混合文本中提取特定格式的内容,比如手机号、邮箱、日期等。这时候正则就派上大用场了。
常见例子:
text = "联系方式:13812345678,请来电咨询。" phone = re.search(r'1\d{10}', text) if phone: print(phone.group()) # 输出:13812345678
text = "邮件地址是 example@domain.com,请查收。" email = re.search(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text) if email: print(email.group())
这种“模式匹配”的方式,比手动切片查找高效得多,也更容易维护。
不同用户输入的数据格式可能五花八门,比如时间格式可能是“2024-01-01”、“2024/01/01”甚至“01.01.2024”。为了统一后续处理,我们可以用正则先做一次格式标准化。
举个例子:
统一时间格式为“YYYY-MM-DD”:
text = "订单日期:2024/03/15,发货时间:03.20.2024" # 先匹配两种格式,再替换成统一形式 text = re.sub(r'(\d{4})/(\d{2})/(\d{2})', r'\1-\2-\3', text) text = re.sub(r'(\d{2})\.(\d{2})\.(\d{4})', r'\3-\1-\2', text) print(text) # 输出:订单日期:2024-03-15,发货时间:2024-03-20
当然,这种替换规则要根据你的实际数据来定,但思路就是先识别不同的格式,再用分组替换统一成标准格式。
这些小技巧在处理复杂数据时经常用到,记得灵活组合使用。
基本上就这些,Python结合正则表达式来做数据清洗,其实并不难,关键是理解你要处理的数据长什么样,然后写出合适的匹配规则。多练几次,你会发现这玩意儿真香。
以上就是Python中如何清洗脏数据—正则表达式清洗实战的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号