使用re.search匹配列表中的字符串的更有效的方法是什么?

时间:2016-04-07 17:33:32

标签: python

我做了一些轻松的搜索,但没有提出任何可靠的内容 - 完全愿意删除它,如果它是重复的。

我试图更好地理解lambda函数,并且我非常确定我可以使用它们来减少for循环:

import re
leest = ["one", "two", "three", "four"]

x = ""
for i in leest:
    if re.search("th.*e", i):
        x = i

print "yay " + x + "!"

我想要的只是取出匹配的术语并在函数中使用它。

我一直在查看列表理解和地图,但这似乎是为了完成工作,例如将项目添加到列表或处理它们。

1 个答案:

答案 0 :(得分:2)

您可以使用next和生成器表达式:

x = next(s for s in leest if re.search("th.*e", s))

如果找不到匹配项,则会引发StopIteration。如果您要默认为"",则可以将默认值传递给next

x = next((s for s in leest if re.search("th.*e", s)), "")