非常好理解的python re正则表达式入手
文章目录
- 案例一
- 1.去掉/剔除掉字符串中的某些特定字符
- 2.怎么实现
- 3.从案例中学习
- 案例二
- 1.确实字符串是否仅包含某些特定字符
- 2.具体实现
- 3.案例学习
- 案例三
- 去掉字符串中的所有表情包
直接写例子,来入手正则。
案例一
1.去掉/剔除掉字符串中的某些特定字符
目标1:有一行字符串,去掉其中的非中文字符
实现1:keep_chinese()函数
目标2:有一行字符串,去掉其中的非中文、非英文、非数字字符
实现2:keep_chinese_and_num_and_eng()函数,用re.compile()和re.sub()
2.怎么实现
import redef keep_chinese(line):pattern = re.compile(r'[^\u4e00-\u9fa5]') #匹配非中文的字符chinese = re.sub(pattern,'',line) #将非中文的替换为空字符return chinesedef keep_chinese_and_num_and_eng(line):"""去除字符串中非中文、非数字、非英文的字符"""pattern = re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')#匹配非中文、非英文、非数字的字符new_line = re.sub(pattern, '', line) #将非...的字符替换为空字符return new_line
if __name__ == '__main__':line = "(2020, 001, '1号背诵《咏鹅》~~~鹅鹅鹅,曲项向天歌。白毛浮绿水,红掌拨清波。abc....')"uid = line.split(',')[0]fid = line.split(',')[1]content = line.split(',',2)[2]#注意,split可以设置分隔两次print(content)print('------')
# new_content = keep_chinese(content)new_content = keep_chinese_and_num_and_eng(content)print(new_content)newline = uid + ',' + fid + ',' + new_content + '\n'
输出:1号背诵咏鹅鹅鹅鹅曲项向天歌白毛浮绿水红掌拨清波abc
3.从案例中学习
1、re库:正则匹配功能
2、re.compile(r'[^\u4e00-\u9fa5]')
#匹配非中文的字符
re.compile(r'[^\u4e00-\u9fa5^a-z^A-Z^0-9]')
#匹配非中文、非英文、非数字的字符
3、re.sub(pattern, '', line)
#将非中文的替换为空字符
编译正则表达式:re.compile()
检索和替换:re.sub() 参数:pattern正则中的模式字符串,repl用来替换的字符串也可以是函数,string原字符串
4、pattern 模式
[^...]
不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符
[0-9]
匹配任何数字。类似于 [0123456789]
[a-z]
匹配任何小写字母
[a-zA-Z0-9]
匹配任何字母及数字
案例二
1.确实字符串是否仅包含某些特定字符
目标:判断字符串是否仅包含大小写字母数字和“_”“-”。eg.“01-word” “01-03”
实现:is_special_str()函数,用re.match()
2.具体实现
# 功能:判断是否是这样一个字符串:仅包含大小写字母数字和"-""_"
def is_special_str(query):flag = Falsepattern = r'[\dA-Za-z\-\_]+$'result = re.match(pattern, query) print(result) # 字符串满足条件情况下:<_sre.SRE_Match object; span=(0, 7), match='01-word'> 类型:<class '_sre.SRE_Match'># 不满足条件情况下:Noneif result:flag = True# 当result非None时,还能获取以下信息:print(result.group())print(result.span()) # (0,7) 匹配开始的(起始位置,终止位置)print(result.start()) # 0print(result.end()) # 7# else:# print("不满足")return flagif __name__ == "__main__":query = "01-word"# query = "01-word世界"if is_special_str(query):print("是")
3.案例学习
re.match(pattern, string, falgs):
从头(注意是从0位置来开始匹配)匹配一个符合规则的字符串
匹配成功返回一个match object对象;不成功则返回None
注意:match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回None
pattern:正则模型
string:要匹配的字符串
falgs:匹配模式
match还可以这样用:
result = re.match("喜欢", "我喜欢你的信息素") # 匹配不到
result = re.match("喜欢", "喜欢你的信息素") # 匹配的到
re.search()就都可以:
result = re.search("喜欢", "我喜欢你的信息素") # 匹配的到
result = re.search("喜欢", "喜欢你的信息素") # 匹配的到
match()和search()的区别:
match()函数只检测RE是不是在string的开始位置匹配
search() 会扫描整个string查找匹配
案例三
去掉字符串中的所有表情包
import emoji
emoji.demojize(str)
非常好理解的python re正则表达式入手相关推荐
- python基础—正则表达式即re模块
正则表达式(regular expression),就是字符匹配模式,而这个匹配规则在我们写爬虫进行数据提取,或者进行数据可视化进行数据清洗时经常用到,多样化的匹配规则在复杂的字符的情况提取数据时助我 ...
- Python Re 正则表达式 数据匹配提取 基本使用
Python re 正则表达式 数据匹配提取 基本使用 小洲提示:代码可直接复制在编译器中运行,方便更好的理解 文章目录 Python re 正则表达式 数据匹配提取 基本使用 前言 一.导入库,内置 ...
- python中正则表达式的简单应用_Python正则表达式详细应用
原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...
- python之正则表达式2
上一篇博客<python之正则表达式1>学习了正则表达是的10种syntax. 本片文章分享7种正则语法,理解起来会比前一篇文章中的语法难度大一点,但是我相信,如果你认真的阅读本文,一定有 ...
- 站长在线Python精讲:Python中正则表达式的语法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中正则表达式的语法详解>.本知识点主要内容有9点:行定位符.元字符.限定符.字符集.排除字符.选择字符.转义字符 ...
- Python学习——正则表达式与re模块实现字符串计算器
学习了python的正则表达式后,一片懵逼,不知道干啥用的,也不知道咋用,只能放一些实例和正则表达式的规则以备后续查阅,希望在经过长时间的训练和使用后能对正则表达式有一个深刻的理解.什么是正则表达式呢 ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...
本文主要向大家介绍了机器学习入门之菜鸟之路--机器学习之非线性回归个人理解及python实现,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 梯度下降:就是让数据顺着梯度最大的方向,也 ...
- python使用正则表达式判别字符串是否以一个大写字符起始而跟随了一些小写字符
python使用正则表达式判别字符串是否以一个大写字符起始而跟随了一些小写字符 # # Python3 code to find sequences of one upper # case lette ...
最新文章
- HarmonyOS开发工具DevEcoStudio 的下载以及运行(包含下载开发工具,sdk,模拟机,以及运行第一个应用你好,世界)
- Java HashMap涉及的数据结构及实现
- 题目1:学生成绩档案管理系统(实验准备)
- java定义final_Java中何时将方法声明为final的
- python3.7保存_python3.7爬取墨菲定律保存在本地txt
- Android之ConnectivityManager
- 个人黑名单 抄袭耻辱墙
- C++ Vector中size()和capacity()区别
- 用python怎么读_python怎么读sql数据?
- 仅需6道题轻松掌握SciPy空间计算基础 | Python技能树征题
- Java-重复性代码统计第一篇
- HTML网易云音乐页面设计,QtDesigner实现网易云音乐助手的页面设计
- scratch 极简坦克大战
- 重新安装固态硬盘后,然后再安装系统至固态硬盘,为何开机后仍然不能从固态硬盘启动系统?
- 白话CMPP、SGIP
- 解决libpng warning: iCCP: known incorrect sRGB profile
- jquery3.2 在线引用地址
- WPS PDF转Word工具
- ElasticJob使用与封装
- WIN11 CH340驱动配置