私信  •  关注

awakenedhaki

awakenedhaki 最近创建的主题
awakenedhaki 最近回复了

您可以使用以下函数来实现这一点。我用过 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]