Python第4章课后编程题以及常见的正则表达式

1、假设有一段英文,其中有单独的字母I误写为i,请编写程序进行改正

方法一:转换为列表来做,通过查询i的下标,把所有下标存放到一个列表中,然后统一修改

str=input('输入字符串: ')
date=str.split(' ')
indexI=[index for index,value in enumerate(date) if value=='i']
for i in indexI:
    date[i]='I'
date=' '.join(date)
print(date)

方法二:使用正则表达式

import re
example=input("输入字符串:")
pattern=re.compile(r'\bi{1}\b')
example=pattern.sub('I',example)
print(example)

运行结果:

2、假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行修正

import re
example=input("输入字符串:")
pattern=re.compile(r'\BI+')
print(re.sub(pattern,'i',example))

3、假设有一段英文文本,其中有单词连续重复了两次,编写程序检查重复的单词并只保留一个,例如文本内容为“This is is a desk”,程序输出为“This is a desk”

import re
example="This is is a desk"
pattern=re.compile(r'(\b\w+) \1')
print(re.sub(pattern,r'\1',example))

4、编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词

import re
example=input("输入:")
pattern=re.compile(r'\b[a-zA-Z]{3}\b')
print(re.findall(pattern,example))

常见的正则表达式:

1、处理连续的重复单词:re.sub(r'(\b\w+) \1',r'\1',text)

2、删除多余空格:re.sub(r'\s+',' ',text)

3、以字母a开头的单词:r'\ba\w*\b'或者r'\ba.+?\b'

  以字母a或A开头的单词:(r'\ba\w*\b',re.I)

4、含有字母o的单词中,第一个非首字母o开头的剩余部分:r'\Ba\w*\b'

5、所有单词:r'\b[a-zA-Z].*?\b'

6、查找并返回x.x.x.的形式r'\d*\.\d*\.\d*'

7、匹配所有数字:r'\d+'

8、以a结尾的单词:r'\w+a\b'   或r'\w*a\b'(可匹配字母a)

9、查找3个字母长的单词:\b[a-zA-Z]{3}\b

10、含有字母a的单词:r'\b\w*a\w*\b'

11、以ing结尾的单词:r'\w+ing\b'

12、查找不在句子开头和结尾的单词never:r'(<=?\w\s)never(?=\s\w)'

 查找前面有内容的单词never:r'(?<=\w\s)never'

13、查找具有连续相同字母的单词:r'(\b\w*(?p<f>\w+)(?p=f)\w*\b)'

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朱颜辞镜花辞树>

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

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

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

打赏作者

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

抵扣说明:

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

余额充值