《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节将介绍一个更强大、更好用的工具。

相关文章
|
10天前
|
数据可视化 前端开发 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(上)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
2天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
5天前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
21 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
10天前
|
前端开发 数据可视化 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(下)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
12天前
|
数据挖掘 Python
SPSS时间序列ARIMA、指数平滑法数据分析汽车销量数据
SPSS时间序列ARIMA、指数平滑法数据分析汽车销量数据
|
14天前
|
机器学习/深度学习 安全 数据挖掘
数据分享|函数型数据分析部分省市新冠疫情数据
数据分享|函数型数据分析部分省市新冠疫情数据
|
21天前
|
数据可视化 数据挖掘 Linux
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
|
21天前
|
数据挖掘 API 区块链
《区块链公链数据分析简易速速上手小册》第2章:数据获取基础(2024 最新版)
《区块链公链数据分析简易速速上手小册》第2章:数据获取基础(2024 最新版)
41 0
|
24天前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告
|
25天前
|
数据挖掘 定位技术
基于出租车GPS轨迹数据的研究:出租车行程的数据分析
基于出租车GPS轨迹数据的研究:出租车行程的数据分析

热门文章

最新文章