《Clojure数据分析秘笈》——2.2节使用正则表达式清洗数据

简介:

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第2章,第2.2节使用正则表达式清洗数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.2 使用正则表达式清洗数据
大概最基本、最普遍的数据清洗方式就是正则表达式了。尽管有时被滥用,但是很多时候正则表达式是完成一项工作最适合的工具。而且,Clojure内置编译正则表达式的语法,因此在Clojure中使用正则表达式也很方便。
本例将编写一个标准化美国电话号码的函数。

2.2.1 准备工作
本方法需要在脚本或REPL中使用clojure.string库。表达式如下:


10a4eadc9d6ef966fc2436139963591e1f61c3ac

2.2.3 实现原理
本方法中最复杂的部分是正则表达式,接下来对其详细讲解。
(?x):这是本身并不匹配任何内容的标识符。它允许展开正则表达式,并且它会忽略空格和注释。以这种方式编写正则表达式使它们具有相当好的可读性和可用性,特别是6个月后当你试图回忆它的作用时。
(d{3}):匹配三个数字。
D{0,2}:匹配0~2个非数字字符。这是为了允许在区号和前缀之间存在可选的分隔符。
(d{3}):匹配另外三个数字。
D?:这是一个可选的非数字字符。例如,允许一个破折号。
(d{4}):这是电话号码的最后4位数字。
圆括号中间的内容可以被正则表达式匹配。如果正则表达式的圆括号中没有组(groups),re-find仅返回匹配的字符串。如果有组,将返回一个向量。匹配的整个字符串是向量的第一个元素,正则表达式中组的内容存在于向量后面的元素中。本方法使用返回的组来构建输出。
2.2.4 更多信息
正则表达式很复杂,而且很多书对其做了介绍。这里有更多关于正则表达式的资源:
JavaDocs里关于Pattern类的内容可以在http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html找到。它总结了Java中使用正则表达式的语法。
关于正则表达式的Oracle Java教程可以在http://docs.oracle.com/javase/tutorial/essential/regex/找到。
RegexPlant的在线测试器,参见http://www.regexplanet.com/advanced/java/index.html。但REPL是我通常用来构建或测试正则表达式的工具。
2.2.5 参阅
Jamie Zawinski曾说过:
有一些人,当他们遇到难题的时候,会想“我知道,我将使用正则表达式”。然后他们就会有两个难题。
正则表达式是一个复杂的、愚钝的工具,而且通常需要精心设计。有时它们是合适的工具,但有时不是。2.11节将介绍一个更强大、更好用的工具。

相关文章
|
18天前
|
数据采集 数据可视化 数据挖掘
多维数据分析:使用Pandas进行复杂的数据操作和聚合
【4月更文挑战第12天】Pandas是Python的强大数据分析库,提供DataFrame数据结构进行多维数据处理。本文介绍了使用Pandas进行多维数据分析的流程:1) 导入数据(如CSV、Excel);2) 数据预处理,包括缺失值处理和类型转换;3) 数据探索,利用describe()、hist()、plot()等进行统计和可视化;4) 数据操作,如筛选、排序和分组;5) 数据聚合,通过groupby()和agg()进行计算。文中还给出了电商数据分析的案例,展示Pandas在实际应用中的价值。
|
23天前
|
人工智能 监控 数据可视化
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
|
2月前
|
自然语言处理 小程序 数据挖掘
数据分析实战-Python实现博客评论数据的情感分析
数据分析实战-Python实现博客评论数据的情感分析
118 0
|
11天前
|
数据可视化 数据挖掘 Linux
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
|
15天前
|
数据挖掘 定位技术
基于出租车GPS轨迹数据的研究:出租车行程的数据分析
基于出租车GPS轨迹数据的研究:出租车行程的数据分析
23 0
|
16天前
|
机器学习/深度学习 数据采集 数据挖掘
Python 的科学计算和数据分析: 解释什么是数据规整(Data Wrangling)?
【4月更文挑战第15天】数据规整是将原始数据转化为适合分析和建模的格式的关键步骤,涉及缺失值处理(删除、填充、插值)、异常值检测与处理、数据类型转换、重采样、数据合并、特征选择和特征变换等任务。这些预处理步骤确保数据质量和准确性,为后续的数据分析和机器学习模型构建奠定基础。
19 4
|
27天前
|
存储 机器学习/深度学习 数据采集
数据分析师如何处理数据以进行分析?
【4月更文挑战第4天】数据分析师如何处理数据以进行分析?
20 9
|
28天前
|
人工智能 监控 数据可视化
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
【Python】Python商业公司贸易业务数据分析可视化(数据+源码)【独一无二】
|
2月前
|
存储 数据采集 数据挖掘
python数据分析——数据分类汇总与统计
数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
66 1
|
2月前
|
存储 SQL 数据挖掘
python数据分析——数据的选择和运算
在数据分析中,数据的选择和运算是非常重要的步骤。数据选择和运算是数据分析中的基础工作,正确和高效的选择和运算方法对于数据分析结果的准确性和速度至关重要。
44 0