正则表达式:在列表中搜索
- 2025-03-05 09:16:00
- admin 原创
- 39
问题描述:
我想根据正则表达式过滤列表中的字符串。
还有比 更好的东西吗[x for x in list if r.match(x)]
?
解决方案 1:
完整示例(Python 3):
对于 Python 2.x,请查看下面的注释
import re
mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"]
r = re.compile(".*cat")
newlist = list(filter(r.match, mylist)) # Read Note below
print(newlist)
印刷:
['cat', 'wildcat', 'thundercat']
笔记:
对于 Python 2.x 开发人员,filter
已返回列表。在Python 3.xfilter
中已更改为返回迭代器,因此必须将其转换为list
(以便能够很好地看到其打印出来)。
Python 3 代码示例
Python 2.x 代码示例
解决方案 2:
您可以使用以下命令在 Python 3.x 中创建迭代器或在 Python 2.x 中创建列表:
filter(r.match, list)
要将 Python 3.x迭代器转换为列表,只需将其转换为;list(filter(..))
。
解决方案 3:
要在不先编译正则表达式的情况下执行此操作,请使用lambda
函数 - 例如:
from re import match
values = ['123', '234', 'foobar']
filtered_values = list(filter(lambda v: match('^d+$', v), values))
print(filtered_values)
返回:
['123', '234']
filter()
只将 acallable
作为它的第一个参数,并返回一个列表,其中该可调用函数返回“真”值。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD