• Python实现简易过滤删除数字的方法


    嗨喽~大家好呀,这里是魔王呐 ❤ ~!

    python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

    如果想从一个含有数字,汉字,字母的列表中滤除仅含有数字的字符,

    当然可以采取正则表达式来完成,但是有点太麻烦了,

    因此可以采用一个比较巧妙的方式:

    1、正则表达式解决

    import re
    L = [u'小明', 'xiaohong', '12', 'adf12', '14']
    for i in range(len(L)):
    if re.findall(r'^[^\d]\w+',L[i]):
    print re.findall(r'^\w+$',L[i])[0]
    elif isinstance(L[i],unicode):
    print L[I]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、巧妙地避开正则表达式

    L = [ 'xiaohong', '12', 'adf12', '14',u'晓明']
    for x in L:
    try:
    int(x)
    except:
    print x
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、使用string内置方法

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    L = [ 'xiaohong', '12', 'adf12', '14',u'晓明']
    #对于python3来说同样还可以使用string.isnumeric()方法
    for x in L:
    if not x.isdigit():
    print x
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4、去除两端的数字

    如果只是去除两端可能含有数字的字符串里的数字,则可以使用内置的strip

    方式如下:

    In [24]: import string
    In [25]: astring = '12313213215just for 32 test 1306436'
    In [26]: astring.strip(string.digits)
    Out[26]: 'just for 32 test '
    In [27]: astring.rstrip(string.digits)
    Out[27]: '12313213215just for 32 test '
    In [30]: astring.lstrip(string.digits)
    Out[30]: 'just for 32 test 1306436'
    #注意
    In [31]: astring
    Out[31]: '12313213215just for 32 test 1306436'
    In [32]: astring.strip('0123456')
    Out[32]: 'just for 32 test '
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    .strip([char]) 中的 char 给定时,则截取两端的字符直到满足不在set(char) 中,不需要有序,切记!

    实例扩展:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    crazystring = 'dade142.!0142f[., ]ad'
    # 只保留数字
    new_crazy = filter(str.isdigit, crazystring)
    print(''.join(list(new_crazy))) #输出:1420142
    # 只保留字母
    new_crazy = filter(str.isalpha, crazystring)
    print(''.join(list(new_crazy))) #睡出:dadefad
    # 只保留字母和数字
    new_crazy = filter(str.isalnum, crazystring)
    print(''.join(list(new_crazy))) #输出:dade1420142fad
    # 如果想保留数字0-9和小数点'.' 则需要自定义函数
    new_crazy = filter(lambda ch: ch in '0123456789.', crazystring)
    print(''.join(list(new_crazy))) #输出:142.0142.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    上述代码运行结果:

    1420142 dadefad dade1420142fad 142.0142.

    尾语

    最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

    希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

    躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

    最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 相关阅读:
    静态Vxlan多活网关实验配置(集中式网关)
    腾讯云对象存储的在Java使用步骤介绍
    Linux 常用通配符
    [Docker Java 服务]Docker 容器中Java服务问题排查
    华为智慧搜索,下一片流量蓝海的“入海口”
    Linux之基于Centos系统安装Redis、MySQL、Nginx
    【OI学习笔记】线性代数-高斯消元法
    CAD快捷键——绘制类
    前端实现websocket的应用场景以及逻辑实现
    你了解Polysciences PEI 25K转染试剂吗?
  • 原文地址:https://blog.csdn.net/python56123/article/details/133859821