第3关:re 模块中常用的功能函数(二)

任务描述

本关任务:编写代码,匹配相应的内容。

相关知识

为了完成本关任务,你需要掌握:

1.finditer()函数;

2.split()函数;

3.sub()函数;

4.subn()函数。

以下实例均可在命令行窗口中练习。

finditer()函数

搜索字符串,返回一个Match对象的迭代器(包含匹配的开始和结束的位置,如下图中的i所示)。找到正则匹配的所有子串,把它们作为一个迭代器返回。

格式:re.finditer(pattern, string, flags=0)

  1. itext = re.finditer(r'\d+','12 edueduedu44coder deducoder, 11skdh ds 12') #匹配所有的数字
  2. for i in itext:
  3. print(i)
  4. print(i.group())
  5. print(i.span()) #span()返回一个元组包含匹配 (开始,结束) 的位置

运行结果如下:

split()函数

按照能够匹配的子串,将string分割后返回列表。

格式:re.split(pattern, string)

可以使用re.split来分割字符串,如:re.split(r'\s+', text)将字符串,按空格分割成一个单词列表。

以数字为分割符,将字符串分割:

  1. print(re.split(r'\d+','asas2kdjs4jds5djdfj1djf0'))

运行结果如下:

sub()函数

使用re替换string中每一个匹配的子串后,返回替换后的字符串。

格式:re.sub(pattern, repl, string, count)

-替代,如下:

  1. import re
  2. text = "aaa,bbb,ccc,ddd"
  3. print(re.sub(r',', '-', text))

运行结果如下:

subn()函数

返回替换次数。

格式:subn(pattern, repl, string, count=0, flags=0); 解释:用A替换123中的1,结果为A23repl就是指的A

把所有的数字替换为A

  1. print(re.subn('\d','A','1asd2dkjf34'))

运行结果如下:

 

subn()不仅返回了替换后的字符串,还返回了替换的次数。

编程要求

根据提示,补全右侧编辑器中 Begin 至 End 区间的代码,实现以下功能:

  • 匹配测试输入的字符串text中以t开头的所有单词并显示;
  • 用空格分割句子;
  • -代替句子中的空格;
  • -代替句子中的空格,并返回替换次数。

测试说明

平台会对你编写的代码进行测试:

平台测试输入:

  1. The moment you think about giving up,think of the reason why you held on so long.`

预期输出:

  1. think
  2. think
  3. the
  4. ['The', 'moment', 'you', 'think', 'about', 'giving', 'up,', 'think', 'of', 'the', 'reason', 'why', 'you', 'held', 'on', 'so', 'long.']
  5. The-moment-you-think-about-giving-up,-think-of-the-reason-why-you-held-on-so-long.
  6. ('The-moment-you-think-about-giving-up,-think-of-the-reason-why-you-held-on-so-long.', 16)

开始你的任务吧,祝你成功!

import re
text = input()
#********** Begin *********#
#1.匹配以t开头的所有单词并显示
itext = re.finditer(r'\bt\w*',text)
for i in itext:
    print(i.group())
#2.用空格分割句子
print(re.split(r' ',text))
#3.用‘-’代替句子中的空格 
print(re.sub(r' ','-',text))
#4.用‘-’代替句子中的空格,并返回替换次数
print(re.subn(r' ','-',text))
#********** End **********#

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

畜牧当道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值