正则表达式:在列表中搜索

新手上路,请多包涵

我想根据正则表达式过滤列表中的字符串。

有没有比 [x for x in list if r.match(x)] 更好的东西?

原文由 leoluk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 338
2 个回答

您可以使用以下命令在 Python 3.x 中创建 迭代器 或在 Python 2.x 中创建 列表

 filter(r.match, list)

要将 Python 3.x 迭代器 转换为列表,只需转换它; list(filter(..))

原文由 sepp2k 发布,翻译遵循 CC BY-SA 4.0 许可协议

完整示例(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.x 中 filter 被更改为返回一个迭代器,所以它必须被转换为 list (为了看到它打印得很好)。

Python 3 代码示例

Python 2.x 代码示例

原文由 Mercury 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题