题意理解:
从字符串中筛选出指定集合中包含的字符,生成新的字符串,被筛选出的字符可转化为指定类实例。
解题思路:
-
对于指定集合可使用set函数生成。
-
对于字符串中不属于指定集合中字符的筛选,可使用字符串的join函数、filter函数等模块,文本操作等实现。
-
对于生成指定类实例,可使用字符串的replace函数、join函数、map函数等模块或自定义函数实现。
Python把字符串作为序列处理,可以使用Python之间的一些序列通用操作来处理字符串。
示例1:
需求:从字符串’abcd1234’中过滤出非数字字符,生成新的字符串,被筛选出的字符转化成整数型
#将原字符串转成序列
string = 'abcd1234'
s_list = list(string)
#生成指定集合(只含数字)
num_set = set(['0','1','2','3','4','5','6','7','8','9'])
# filter函数筛选非数字字符,并将其转换成整型
num_list = list(map(int,filter(lambda x:x not in num_set, s_list)))
#将原序列中非数字字符用空格代替
new_s_list = [' ' if x not in num_set else x for x in s_list]
#将新序列转换成字符串,同时将非数字字符被转换成的数字打印
new_string = ''.join(new_s_list)
print(new_string)
print(num_list)
输出结果:1234 [97, 98, 99, 100]
示例2:
需求:从文本’Hello,World!'中过滤出非字母字符,生成新的字符串,被筛选出的字符转换成其在ASCII码表中的值。
#转成序列
string = 'Hello,World!'
s_list = list(string)
#生成指定集合(只含字母)
alpha_set = set(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'))
#filter筛选非字母字符,并将其转换为其在ASCII码表中的值
ascii_list = list(map(ord,filter(lambda x:x not in alpha_set, s_list)))
#将原序列中非字母字符用空格代替
new_s_list = [' ' if x not in alpha_set else x for x in s_list]
#将新序列转换成字符串,同时将非字母字符被转换成的ASCII值打印
new_string = ''.join(new_s_list)
print(new_string)
print(ascii_list)
输出结果:Hello World [44, 33]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python过滤字符串中不属于指定集合中字符的类实例 - Python技术站