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