Python爬虫数据清洗(学习一点基础的正则表达式)

正则表达式概念

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
在python中提供了re 库,它是关于正则表达式的一个库,里面包含了多种字符串匹配的方法,对于网站上爬取数据后清洗处理有很大的帮助。

Python中常用正则符号

\w      匹配字母数字及下划线
\W      匹配f非字母数字下划线
\s      匹配任意空白字符,等价于[\t\n\r\f]
\S      匹配任意非空字符
\d      匹配任意数字
\D      匹配任意非数字
\A      匹配字符串开始
\Z      匹配字符串结束,如果存在换行,只匹配换行前的结束字符串
\z      匹配字符串结束
\G      匹配最后匹配完成的位置
\n      匹配一个换行符
\t      匹配一个制表符
^       匹配字符串的开头
$       匹配字符串的末尾
.       匹配任意字符,除了换行符,re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
[....]  用来表示一组字符,单独列出:[amk]匹配a,m或k
[^...]  不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
*       匹配0个或多个的表达式
+       匹配1个或者多个的表达式
?       匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n}     精确匹配n前面的表示
{m,m}   匹配n到m次由前面的正则表达式定义片段,贪婪模式
a|b     匹配a或者b
()      匹配括号内的表达式,也表示一个组

RE库的使用

1.match函数

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
语法格式:match(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string要匹配的字符串
flags (标志位)用于控制正则表达式的匹配方式

匹配成功re.match方法返回一个匹配的对象,否则返回None。

2.search函数

扫描整个字符串并返回第一个成功的匹配
语法格式:re.search(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string要匹配的字符串
flags(标志位)用于控制正则表达式的匹配方式
3.findall函数

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
注意:match 和 search 是匹配一次,而 findall 匹配所有
语法格式:findall(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string要匹配的字符串
flags用于控制正则表达式的匹配方式

浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表

4.sub函数

这个函数正好解决了我爬虫过程中对于数据清洗的问题,将多余字符替换为空,下面放个例子详细介绍下
对于输入的一个字符串,利用正则表达式,去实现字符串替换处理,然后返回被替换后的字符串
语法格式:sub(pattern, repl, string, count=0, flags=0)

参数描述
pattern匹配的正则表达式
repl就是replacement,是被替换的字符串。可以是字符串,也可以是函数
string表示要被处理,要被替换的那个string字符串
count对于匹配到的内容,只处理其中一部分,其中count等于多少,就处理多少次
flags用于控制正则表达式的匹配方式
content= '''hello world 123 321'''
str = re.sub('\d+','数字',content)
print(str)

上面例中我匹配多个不连续的数字,替换成“数字”并输出
运行结果:

hello world 数字 数字
4.compile函数

该函数根据包含的正则表达式的字符串创建模式对象。可以实现更有效率的匹配
语法格式:compile(pattern [, flags])

参数描述
pattern用compile创建的模式对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值