当正则表达式不匹配时,如何返回'value'而不是None。 例如,我想要第二个re.findall返回一个列表:[('a','b','value','d')]这样我就可以对两个字符串进行比较。在这里,如果可能,'value'最好是'False'。
import re
match = re.findall (r'(a)(b)(c)(d)','abcd')
print (match)
match = re.findall(r'(a)(b)(c)(d)','abd')
print (match)
输出[1]:
[('a','b','c','d')]
输出[2]:
[]
答案 0 :(得分:0)
你可以做到:
match = re.findall(r'(a?)(b?)(c?)(d?)','abd')
请注意,这会返回:
In [5]: re.findall(r'(a?)(b?)(c?)(d?)', 'abd')
Out[5]: [('a', 'b', '', 'd'), ('', '', '', '')]
也就是说,它都会为'c'
(您所需的条件)返回一个空白,并为所有匹配四个缺失字符的空白返回。
答案 1 :(得分:0)
在python中观察到一个空列表[]
后,评估为False,这似乎接近你想要的:
>>> [re.findall(c,'abd') for c in 'abcd']
[['a'], ['b'], [], ['d']]
或者,如果您正在寻找匹配而不是匹配的字符:
>>> [c if re.findall(c, 'abd') else False for c in 'abcd' ]
['a', 'b', False, 'd']
如果您想要匹配列表并希望False
代替[]
,那么:
>>> [x if x else False for x in (re.findall(c,'abd') for c in 'abcd')]
[['a'], ['b'], False, ['d']]