2024-04-20 09:46:36 发布
网友
如果需要说
if <this list has a string in it that matches this rexeg>: do_stuff()
Ifound从列表中提取匹配字符串的强大构造:
[m.group(1) for l in my_list for m in [my_regex.search(l)] if m]
……但这很难理解,也太过分了。我不想要名单,我只想知道这样的名单里是否有什么。你知道吗
有没有更简单的阅读方法来得到答案?你知道吗
您只需使用any。演示:
any
>>> lst = ['hello', '123', 'SO'] >>> any(re.search('\d', s) for s in lst) True >>> any(re.search('\d{4}', s) for s in lst) False
如果要从字符串的开头强制匹配,请使用re.match。你知道吗
re.match
解释:
any将检查iterable中是否有任何truthy值。在第一个示例中,我们传递以下列表的内容(以生成器的形式):
>>> [re.search('\d', s) for s in lst] [None, <_sre.SRE_Match object at 0x7f15ef317d30>, None]
其中有一个匹配对象是truthy,而None在布尔上下文中总是计算为False。这就是第二个例子any返回False的原因:
None
False
>>> [re.search('\d{4}', s) for s in lst] [None, None, None]
您只需使用
any
。演示:如果要从字符串的开头强制匹配,请使用
re.match
。你知道吗解释:
any
将检查iterable中是否有任何truthy值。在第一个示例中,我们传递以下列表的内容(以生成器的形式):其中有一个匹配对象是truthy,而
None
在布尔上下文中总是计算为False
。这就是第二个例子any
返回False
的原因:相关问题 更多 >
编程相关推荐