以下代码:
re.findall('(a).(b)|(c).(d)','axbcyd')
捕获两个匹配,两个都有两个空字符串:
[('a', 'b', '', ''), ('', '', 'c', 'd')]
我想返回:
[('a', 'b'), ('c', 'd')]
基本上,只捕获实际匹配的析取的一侧。我怎样才能做到这一点?对完全不同的方法感到满意......
答案 0 :(得分:2)
map(lambda x: tuple(filter(lambda y: y!='',x)),re.findall('(a).(b)|(c).(d)','axbcyd'))
(编辑:功能较少,更加pythonic:
[tuple(y for y in x if y != '') for x in re.findall('(a).(b)|(c).(d)','axbcyd')]
)