您可以使用以下函数来实现这一点。我用过
re.compile
考虑到它比呼叫快一点
re
如果您有很长的列表,则直接从模块中输出函数。
我也用过
yield
和
finditer
因为我不知道你的列表会有多长时间,所以考虑到他们懒惰的评估,这会提供一些内存效率。
import re
def find_numbers(iterable):
NUMBER = re.compile('\d+')
def numbers():
for string in iterable:
yield from NUMBER.finditer(iterable)
for number in numbers():
yield int(number.group(0))
print(list(find_numbers(['25 birds, 1 cat, 4 dogs, 101 ants'])))
# [25, 1, 4, 101]