python简洁使用正则对列表元素进行筛选, 并生成新列表

最近对数据进行处理的时候, 需要对一个列表里面的数据进行除杂处理, 只保留一部分有特定特征的值, 所以必须用到正则表达式对来匹配, 开始使用的是一下子就想到的就是通过循环列表内的每个元素来进行匹配.

例如, 下面就是使用简单循环从列表中用正则匹配筛选出所有的dog特征的数据:

正则表达式是为了匹配字符串中特定的字符, 是一个很强大的工具, 对数据筛选处理方面是用处很大的, 特别是爬虫, 数据分析等
需要对数据进行筛选的工作. 而下面的例子只用到了正则中很小的一部分功能

还未了解正则的可以到 菜鸟教程—正则表达式 学习一下.

# 筛选出data_list中所有的dog并保存在new_data_list中
import re

data_list = ['cat_1', 'dog_1', 'dog_2', 'cat_2', 'dog_3', 'cat_3']  # 原列表中既有dog也有cat, 并且无规律

new_data_list = []  # 保存筛选出来dog的列表

for data in data_list:  # 遍历列表
    if  re.match('dog.*', data) != None:  # 如果正则匹配出的数据不为None, 就将此数据添加到新列表中
        new_data_list.append(data)

print(new_data_list)

运行后的结果如下, 可以看出成功筛选出了所有的dog并保存在了新列表中

['dog_1', 'dog_2', 'dog_3']

Process finished with exit code 0

但是但是这个还是有点太多了, 而且python中这么多高级函数, 还有迭代器生成器, 肯定有跟简洁的方法, 所以就想到了使用
filter()函数还有lambda匿名函数来进行简化.

代码如下:

# 筛选出data_list中所有的dog并保存在new_data_list中
import re

data_list = ['cat_1', 'dog_1', 'dog_2', 'cat_2', 'dog_3', 'cat_3']  # 原列表中既有dog也有cat, 并且无规律

new_data_list = list(filter(lambda x: re.match('dog.*', x) != None, data_list))  # 生成新列表

print(new_data_list)

运行结果仍然很上面使用循环的一样, 但是却简单了不少, 只用了一行, 还不用新建空列表:

['dog_1', 'dog_2', 'dog_3']

Process finished with exit code 0

如果不知道filter()函数lambda匿名函数的具体用法, 可以到 filter—廖雪峰官方网站匿名函数—廖雪峰官方网站 学习.
看完应该就知道上面的用法了.


⚠️系个人总结, 如有更好的方法欢迎留言提出…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值