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)'

猜你喜欢

转载自blog.csdn.net/lxy20011125/article/details/125294757