1.第1关:练习-Python字符串之综合练习一
任务:给定一个字符串,该字符串中包含了许多邮箱号,使用字符串函数筛选出这些邮箱号,并根据不同的电子邮件服务商来分类。
分类结果为一个字典,字典的键为邮箱号中`@`和`.com`之间的一截,字典的值为包含邮箱号的列表
import copy
str1 = input()# 包含邮箱号的字符串,input()输入的都是字符串
Str =copy.deepcopy(str1) #复制一个
count=Str.count("@")#看看有多少个邮箱号码
list1=list(str1.split(','))#把邮箱号全部放入list1中作为邮箱的value列表
list2=[]#定义一个空列表,作为邮箱类名的key值列表
for i in range(0,count):#有几个邮箱切几次
a = Str.find("@")# 返回@的位置
b = Str.find(".")# 返回.的位置
if Str[a+1:b] not in list2:#去重操作,因为可能有好几个同类别的邮箱
list2.append(Str[a+1:b])#把邮箱类名放入list2中
Str=Str[b+4:]#把前面判断过的邮箱号码删除,接着判断知道判断结束为止
dic={}#定义一个空列表,将其键与值对应存入,注意这里一个键对应多个值,所以值的类型是列表,(题目要求已经给出)
for i in list2:
for j in list1:
if j.endswith(i+".com"):#如果值是以邮箱名+.com结尾
dic.setdefault(i,[]).append(j)#就加入到key对应的列表中
res=[]#返回结果列表
keys=[]#key值列表
values=[]#value值列表
for key,valu in dic.items():#遍历字典
keys.append(key)#将键加入到keys列表中
values.append(valu)#将值加入到values列表中,注意这里有一个列表嵌套,列表里面还有列表
for i in range(len(keys)):#有几个键就循环几次
str4=",".join(values[i])#去除了列表的方括号
res.append(keys[i]+':'+str4)#将格式化后的元素加入到返回结果列表里面
res.sort()#进行排序,要符合测试集给出的顺序
print(res)#输出答案###
2.第2关:练习-Python字符串之综合练习二
任务:给定一个字符串,该字符串的内容为一个英语短句,请编写代码实现单词的反向排序
str1 = input()
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数实现单词反向排序,打印反向排序之后的结果
list1 = str1.split()
list1.reverse()
str2 = " ".join(list1)
print(str2)
3.第3关:练习-Python字符串之综合练习三
任务:给定一个字符串,该字符串是一个包含地名、空格、特殊符号和 html 标签的字符串,请使用字符串函数筛选出其中的地名。
import re
str1 = input()
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用字符串函数来清洗出字符串中的地名
clean_string = re.sub(r'<[^>]+>', '', str1)
# 输出结果
# 去除 ** 字符
final_string = clean_string.replace('**', '