「Python」数据清洗常用正则
对爬虫数据进行自然语言清洗时用到的一些正则表达式
标签中的所有属性匹配(排除src,href等指定参数)
# \b(?!src|href)\w+=[\'\"].*?[\'\"](?=[\s\>])
# 匹配特征 id="..."
# \b(?!...)排除属性名中的指定参数,零宽断言前向界定判断属性结束
# tips: 带\b的python正则匹配一定要加r转义
str1 = '''
<div class="concent" id="zoomcon" style="padding:15px;">
<img border="0" src="/xcsglj/zyhd/201802/f5492c1752094f44bcebae4a68480c64/images/9a900610afc54ee3b468780785a2ecec.gif">
<img border="0" src="/xcsglj/zyhd/201802/f5492c1752094f44bcebae4a68480c64/images/4b802f5d2d8c4ecd9a0525e0da7d886e.gif">
<img href="0" src="/xcsglj/zyhd/201802/f5492c1752094f44bcebae4a68480c64/images/4b802f5d2d8c4ecd9a0525e0da7d886e.gif">
'''
print(re.findall(r'\b(?!src)\w+=[\'\"].*?[\'\"](?=[\s\>])', string=str1))
# result: ['class="concent"', 'id="zoomcon"', 'style="padding:15px;"', 'border="0"', 'border="0"', 'href="0"']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
html标签的所有参数
# (?<=\<\w{1}\s).*?(?=\>)
# (?<=\<\w{2}\s).*?(?=\>)
# ...
# 清除n个字母的标签的所有参数
# tips: 零宽断言不支持不定长度的匹配
str1 = '''
<a class="1" id="1" style="padding:1;">
<td class="2" id="2" style="padding:2;">
<div class="3" id="3" style="padding:3;">
<span class="4" id="4" style="padding:4;">
<table class="5" id="5" style="padding:5;">
'''
print(re.findall('(?<=\<\w{1}\s).*?(?=\>)', string=str1))
# result: ['class="1" id="1" style="padding:1;"']
print(re.findall('(?<=\<\w{2}\s).*?(?=\>)', string=str1))
# result: ['class="2" id="2" style="padding:2;"']
print(re.findall('(?<=\<\w{3}\s).*?(?=\>)', string=str1))
# result: ['class="3" id="3" style="padding:3;"']
print(re.findall('(?<=\<\w{4}\s).*?(?=\>)', string=str1))
# result: ['class="4" id="4" style="padding:4;"']
print(re.findall('(?<=\<\w{5}\s).*?(?=\>)', string=str1))
# result: ['class="5" id="5" style="padding:5;"']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
非中文字符
# u'[^\u4e00-\u9fa5]+'
# 清除非中文字符
str1 = 'aa.,a中文,aa。a'
print(re.compile(u"[^\u4e00-\u9fa5]+").sub('', str1))
# result: 中文
- 1
- 2
- 3
- 4
- 5
- 6
- 7
指定通配符中的内容
# \{.*?\} // 匹配{}中的内容
# \<.*?\> // 匹配<>中的内容
str1 = '{通配符}你好,今天开学了{通配符},你好'
print(re.compile(r'\{.*?\}').sub('', str1))
# result: 你好,今天开学了,你好
- 1
- 2
- 3
- 4
- 5
- 6
html标签尾部的空格
# \s*(?=\>)
- 1
指定标签(包括中间的内容)
# \<style.*?/style\>
- 1
清除常用中英文字符/标点/数字外的特殊符号
# u'[^\u4e00-\u9fa5\u0041-\u005A\u0061-\u007A\u0030-\u0039\u3002\uFF1F\uFF01\uFF0C\u3001\uFF1B\uFF1A\u300C\u300D\u300E\u300F\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\u3010\u3011\u2014\u2026\u2013\uFF0E\u300A\u300B\u3008\u3009\!\@\#\$\%\^\&\*\(\)\-\=\[\]\{\}\\\|\;\'\:\"\,\.\/\<\>\?\/\*\+\_"\u0020]+'
str1 = re\
.compile(\
u "[^"
u "\u4e00-\u9fa5"
u "\u0041-\u005A"
u "\u0061-\u007A"
u "\u0030-\u0039"
u "\u3002\uFF1F\uFF01\uFF0C\u3001\uFF1B\uFF1A\u300C\u300D\u300E\u300F\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\u3010\u3011\u2014\u2026\u2013\uFF0E\u300A\u300B\u3008\u3009"
u "\!\@\#\$\%\^\&\*\(\)\-\=\[\]\{\}\\\|\;\'\:\"\,\.\/\<\>\?\/\*\+\_"
u "\u0020"
u "]+")\
.sub('', str1)
--------------------- 作者:Hugh_Dong 来源:CSDN 原文:https://blog.csdn.net/qq_33282586/article/details/80643817?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
「Python」数据清洗常用正则的更多相关文章
- 「python」: arp脚本的两种方法
「python」: arp脚本的两种方法 第一种是使用arping工具: #!/usr/bin/env python import subprocess import sys import re de ...
- 「Python」socket指南
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...
- 「Python」字符串操作内置函数
目录: capitalize casefold center count encode decode endswith expandtabs find format format_map index ...
- 「Python」5个开源项目
1-OpenAI universe Universe是一个能在世界上所有的游戏.网站和其他应用中,衡量和训练AI通用智能的软件平台. Universe,AI代理通过称为虚拟网络计算或VNC发送模拟的鼠 ...
- test「Python」流程&中文
#例1 text='dShArpen骑草泥马在马勒隔壁玩Python时看到一群SB绿茶婊在逗逼,马上的他马上吓尿了' iftext = '马' for letter in text.decode('u ...
- 「Python」为什么Python里面,整除的结果会是小数?
2018-06-08 参考资料:Python学习笔记(4)负数除法和取模运算 先来看三个式子(!这是在Python3.0下的运算结果): 输出结果: ‘//’明明是整除,为什么结果不是整数,而会出现小 ...
- 「Python」6种python中执行shell命令方法
用Python调用Shell命令有如下几种方式: 第一种: os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等 ...
- 「Python」35个知识点
No.1 一切皆对象 众所周知,Java中强调“一切皆对象”,但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function)也是对象,而且Pyt ...
- 「Python」pandas入门教程
pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据. 具有行列标签的任意矩阵数据(均匀类型或不同类型) ...
随机推荐
- Word操作——通配符
参考资料:https://www.cnblogs.com/whchensir/p/5768030.html (1)查找引号中的内容 (“*”) ^p\1^p (2)按照句号,分号换行,当有引号时不换行 ...
- 【SpringBoot】springboot -- 2.0版本自定义ReidsCacheManager的改变
1. 问题发现 在1.0版本中,我们配置redis的cacheManager是这种方式: //缓存管理器 @Bean public CacheManager cacheManager(@Suppres ...
- 接口测试工具-tamper data
1.火狐浏览器插件 安装:1)打开火狐浏览器-alt键-附加组件-搜索tamper data-安装-重启火狐浏览器-在工具下打开tamper data 使用:start tamper 示例:http: ...
- charles-抓包Andriod 手机的设置
长按弹出 修改后: charles如果不配置SSL通用证书: 会导致HPPTS协议的域名抓取失败/乱码的现象: 现在SSL越来越多,很多博客都上了SSL,支付相关的行业更是基础配置: charles配 ...
- Centos部署PHP项目(安装Apache,PHP)
1.apache安装 [root@tele-2 ~]# yum install httpd 2.外网访问虚拟机中的地址,我们就需要修改一下apache的配置文件 vim /etc/httpd/con ...
- javascript将base64编码的图片数据转换为file并提交
/** @param base64Codes 图片的base64编码 */ function sumitImageFile(base64Codes){ var form=document.forms[ ...
- JAVA常用加密解密算法Encryption and decryption
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
- H.264学习--1
1.宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为 ...
- python解析FreeMind思维导图
记录瞬间 在实际工作中,通常需要使用思维导图进行一些分析和设计,但是,在设计好之后,想要把思维导图的内容转化成文字进行输出怎么做呢? 使用python(当然可以使用其他的语言进行处理)可以很好的解决这 ...
- 读HashMap 源码(jdk11)的见解
如果想系统详细的了解HashMap请移步各大佬博客.这篇文章只是个人的一些见解. 数组+链表 或 数组+红黑树.这种说法感觉有迷惑性. 之前看博客都说 HashMap 的存储是数组+链表(jdk6), ...