Python中sub()的用法说明

 更新时间:2021年04月09日 10:11:48   作者:围城客  
这篇文章主要介绍了Python中sub()的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python来进行查询和替换一个文本字符串?

可以使用sub()方法来进行查询和替换,sub方法的格式为:

sub(replacement, string[, count=0])

replacement是被替换成的文本

string是需要被替换的文本

count是一个可选参数,指最大被替换的数量

例子:

import re
p = re.compile('(blue|white|red)')
print(p.sub('colour','blue socks and red shoes'))
print(p.sub('colour','blue socks and red shoes', count=1))

输出:

colour socks and colour shoes
colour socks and red shoes

subn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量

例如:

import re
p = re.compile('(blue|white|red)')
print(p.subn('colour','blue socks and red shoes'))
print(p.subn('colour','blue socks and red shoes', count=1))

输出

('colour socks and colour shoes', 2)
('colour socks and red shoes', 1)

补充:Python中正则表达式sub函数用法总结

正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。

1、这里的sub方法,是被编译成‘RegexObject'实例后的实例的方法

Sub(replacement,string[,count =0 ])

1)返回的字符串是在字符串中用RE最左边不重复的匹配来替换。如果模式没有被发现,字符将没有被改变的返回。

2)可选参数count是模式匹配后替换的最大次数;count必须是非负整数。缺省值是0表示替换所有的匹配。

例子:

2、模块级函数:sub方法

注:这些函数(包括sub函数)使用RE字符串作为第一个参数,而后面的参数与相应的“RegexObject”方法的参数相同,返回要么是None,要么是一个‘MatchObject'实例。

(实际sub返回的是字符串,,两者说法不一致,以实际为准)

Re.sub的作用在于:使用给定的替换内容将匹配模式的子字符串(最左端并且非重叠的子字符串)替换掉

3、作为替换的组号

在2的例子中,只是把一个字符串用其他的内容替换掉了。用replace这个字符串方法能轻松达到同样的效果。而正则表达式允许以更灵活的方式进行搜索,同时它们也允许进行功能更强大的替换。

见证re.sub强大功能的最简单方式就是在替换字符串中使用组号。在替换内容中以‘\\n'型式出现的任何转义序列都会被模式中与组n匹配的字符串替换掉。

例如,假设要把‘*something*'用‘<em>someting</em>'替换掉,前者是在普通文本文档(比如Email)中进行强调的常用方法,而后者则是相应的HTML代码(用于网页)

这里把所有的* *含的字符串都替换掉了。刚开始我以为只替换*world*。记一笔。

4、作为替换的函数

Re.sub函数可以将一个函数作为第二个参数(替换式)。函数会被匹配的对象调用,并且它的返回值会被插入到文本中。(但从例子2看来,是函数的唯一参数是被匹配的对象)

例子1:

test.txt内容:

结果:

例子2

(该例子在《python基础教程》20章)

Sub方法不直接调用callback,而是返回一个新的函数,这个函数会被当成re.sub的替换函数来使用(这就是采用一个匹配的对象作为唯一参数的原因)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • python pygame实现五子棋双人联机

    python pygame实现五子棋双人联机

    这篇文章主要为大家详细介绍了python pygame实现五子棋双人联机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python数据结构详细

    Python数据结构详细

    本文将详细讲解Python的数据结构,下面我们将讲解Python关于关于列表更多的内容以及del 语句和元组和序列等一些具体内容,需要的下伙伴可以参考一下
    2021-09-09
  • Python re.findall中正则表达式(.*?)和参数re.S使用

    Python re.findall中正则表达式(.*?)和参数re.S使用

    本文主要介绍了Python re.findall中正则表达式(.*?)和参数re.S使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python实现模拟锟斤拷等各类乱码详解

    Python实现模拟锟斤拷等各类乱码详解

    说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?本文我们就来一步步探究
    2023-02-02
  • 用Python写漏洞验证脚本的代码

    用Python写漏洞验证脚本的代码

    这篇文章主要介绍了用Python写漏洞验证脚本,本文给大家分享完整实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 详解python的webrtc库实现语音端点检测

    详解python的webrtc库实现语音端点检测

    这篇文章主要介绍了详解python的webrtc库实现语音端点检测,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • python flask开发的简单基金查询工具

    python flask开发的简单基金查询工具

    基于python flask开发的简单基金查询工具,支持大盘指数实时情况查看,总持仓实际涨幅、预估涨幅等功能,感兴趣的朋友可以下载该项目来查看使用
    2021-06-06
  • 解决tensorflow打印tensor有省略号的问题

    解决tensorflow打印tensor有省略号的问题

    今天小编就为大家分享一篇解决tensorflow打印tensor有省略号的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pytest自动化测试数据驱动yaml/excel/csv/json

    pytest自动化测试数据驱动yaml/excel/csv/json

    这篇文章主要为大家介绍了pytest自动化测试数据驱动yaml/excel/csv/json的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python中随机函数random用法实例

    python中随机函数random用法实例

    这篇文章主要介绍了python中随机函数random用法,实例分析了random函数的相关使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论