还是先贴题目和代码
题目很简单,过滤一串字符串,把中文、英文、符号、数字区分开并分别打印
代码如下
class Filter_test(): def filter_test(Str): #过滤出中文 del_china = string.ascii_letters + string.digits + string.punctuation #.ascii_letters为所有字母大小写 digits为数字 punctuation为标点 Str_china = Str.maketrans(del_china,(" "*len(del_china))) #创建转换表 替换表和对应表要等长 所以*len(del_str) Str_china = Str.translate(Str_china)#替换 China_print = Str_china.split() # 过滤出数字 del_num = Str_china + string.ascii_letters + string.punctuation Str_num = Str.maketrans(del_num,(" "*len(del_num))) Str_num = Str.translate(Str_num) Str_num = Str_num.strip() Num_print = Str_num.split() #过滤出英文 del_str = Str_china + string.digits + string.punctuation Str_str = Str.maketrans(del_str,(" "*len(del_str))) Str_str = Str.translate(Str_str) Str_str = Str_str.strip() Str_print = Str_str.split() # 过滤出符号 del_sym = Str_china + string.digits + string.ascii_letters Str_sym = Str.maketrans(del_sym, (" " * len(del_sym))) Str_sym = Str.translate(Str_sym) Str_sym = Str_sym.strip() Sym_print = Str_sym.split() print("过滤出 中文为:{} 英文为:{} 数字为{} 符号为{}".format(China_print,Str_print,Num_print,Sym_print)) if __name__ == '__main__': Str = input("请输入你要过滤的字符串,请勿用中文标点:") Filter_test.filter_test(Str)
很简单一个练习,主要难度在于maketrans()函数和translate()函数是否知晓,思路是先把字符串中不需要的字符用“ ”空格全部替换,然后用spilt()函数分割开并打印,我这里是导入string模块,利用模块里的常量来做对应表
顺带把string常量也在这里贴一下
string.digits:数字0~9
string.letters:所有字母(大小写)
string.punctuation:所有标点
string.lowercase:所有小写字母
string.uppercase:所有大写字母
string.printable:可打印字符的字符串
这里贴的代码还可以优化一下,判断一下标点符号的大小写并做相应处理,待后续优化吧