文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python怎么通过正则匹配指定字符开头与结束提取中间内容

2023-07-05 04:06

关注

本文小编为大家详细介绍“python怎么通过正则匹配指定字符开头与结束提取中间内容”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么通过正则匹配指定字符开头与结束提取中间内容”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、提取包含始末字符

起始字符串固定

a = re.findall('起始字符串.*结束字符串',str)

起始字符串不固定(即从首字符串提取到固定的字符串结束),用^指定从首字符串开始

a = re.findall('^.*结束字符串',str)

二、不包含始末字符串

#方法1a = re.findall('(?<=始字符串).*?(?=末字符串)',str)#方法2a = re.findall('始字符串(.*?)末字符串',str)

在 re.findall()的方法中 '始字符串.末字符串&rsquo; 可以匹配到相同的值直到最后一个值;如果参数为 '始字符串.?末字符串&rsquo;则只匹配到第一个值。其实使用.*和.+都能提取特定始末字符串中间的内容,下面顺便说下两者的区别。

三、.*和.+正则提取的区别

.:匹配任意字符
*:匹配0个或多个字符
?:非贪婪模式,在符合的条件下,尽可能少的匹配(尽可能短的匹配)

str2 = "aabab"a = re.findall('a.*?b',str2)#结果:['aab', 'ab']b = re.findall('a.+?b',str2)#结果:['aab']

.?:匹配aab和ab ,因为可以匹配0个字符,所以可以匹配得到ab
.+?:匹配aab,因为+必须a和b中间至少有一个字符,所以排除了ab

四、起始有无^的区别

str2 = "aabab"c = re.findall('.*',str2)#结果:['aabab', '']d = re.findall('^.*',str2)#结果:['aabab']

五、pandas对具体列的内容通过正则表达式进行数据提取

使用前要确保该列的类型统一,str或者float格式,最好事先通过astype强制转换一下

df[&lsquo;新列名&rsquo;]=df[&lsquo;提取的列名&rsquo;].str.extract(&lsquo;正则表达式&rsquo;, expand = True)

六、遇到的报错

报错:pattern contains no capture groups
(翻译:模式不包含捕获组)
解决:根据docs ,您需要为 str.extract 指定一个捕获组(即括号)好,提取。

读到这里,这篇“python怎么通过正则匹配指定字符开头与结束提取中间内容”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯