所以我尝试仅打印月份以及使用时:
regex = r'([a-z]+) \d+'
re.findall(regex, 'june 15')
它打印:6月 但是当我尝试对这样的列表执行相同操作时:
regex = re.compile(r'([a-z]+) \d+')
l = ['june 15', 'march 10', 'july 4']
filter(regex.findall, l)
它打印出相同的列表,就像他们不计算我不需要的数字一样。
答案 0 :(得分:3)
使用map
代替filter
,如下所示:
import re
a = ['june 15', 'march 10', 'july 4']
regex = re.compile(r'([a-z]+) \d+')
# Or with a list comprehension
# output = [regex.findall(k) for k in a]
output = list(map(lambda x: regex.findall(x), a))
print(output)
输出:
[['june'], ['march'], ['july']]
奖金:
为了使列表列表更平整,您可以执行以下操作:
output = [elm for k in a for elm in regex.findall(k)]
# Or:
# output = list(elm for k in map(lambda x: regex.findall(x), a) for elm in k)
print(output)
输出:
['june', 'march', 'july']