python:列表理解中的海象运算符和 re.search()
python: walrus operator and re.search() in list comprehension
我有一个字符串列表,我想从元素中提取一个模式。
例如,给定列表 ["A 12345bcd", "BYT 676 CCC"]
和模式 r'\d\d\d\d\d'
,我想获得:["12345", ""]
我知道没有它怎么办,但我想使用海象运算符:=
。
我试过了:
[(m:=re.search(r'\d\d\d\d\d', 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'\d\d\d\d\d', x), m.group() if m else "")
这是 group
/空条件表达式,m :=
提前适当评估:
m.group() if (m := re.search(r'\d\d\d\d\d', 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', '']
我有一个字符串列表,我想从元素中提取一个模式。
例如,给定列表 ["A 12345bcd", "BYT 676 CCC"]
和模式 r'\d\d\d\d\d'
,我想获得:["12345", ""]
我知道没有它怎么办,但我想使用海象运算符:=
。
我试过了:
[(m:=re.search(r'\d\d\d\d\d', 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'\d\d\d\d\d', x), m.group() if m else "")
这是 group
/空条件表达式,m :=
提前适当评估:
m.group() if (m := re.search(r'\d\d\d\d\d', 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', '']