关于过滤字符中不同元素小结

还是先贴题目和代码

  题目很简单,过滤一串字符串,把中文、英文、符号、数字区分开并分别打印

代码如下

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("过滤出\n 中文为:{}\n 英文为:{}\n 数字为{}\n 符号为{}".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:可打印字符的字符串

这里贴的代码还可以优化一下,判断一下标点符号的大小写并做相应处理,待后续优化吧

猜你喜欢

转载自www.cnblogs.com/keima/p/10444386.html
今日推荐