python:walrus运算符和列表理解中的re.search()



我有一个字符串列表,我想从元素中提取一个模式。

例如,给定列表["A 12345bcd", "BYT 676 CCC"]和模式r'ddddd',我想获得:["12345","]

我知道如何不用它,但我想使用海象运算符:=

我试过了:

[(m:=re.search(r'ddddd', x), m.group() if m else "") for x in ["A 12345bcd", "BYT 676 CCC"]]

但结果是:

[(<re.Match object; span=(2, 7), match='12345'>, '12345'), (None, '')]

因此,不是我想要的

这是一个元组:

(m:=re.search(r'ddddd', x), m.group() if m else "")

这是group/空条件表达式,m :=在早期得到适当评估:

m.group() if (m := re.search(r'ddddd', x)) else ""
import re
l = ["A 12345bcd", "BYT 676 CCC"]
result = [(res := re.search(r"d{5}", x)) and res.group() or "" for x in l]
print(result)

输出:

['12345', '']

相关内容

  • 没有找到相关文章

最新更新