首页 > 解决方案 > 根据字符串中的整数将列表拆分为子列表

问题描述

我有一个这样的字符串列表:

['text_1.jpg', 'othertext_1.jpg', 'text_2.jpg', 'othertext_2.jpg', ...]

实际上,每个数字有超过 2 个条目,但这是一般格式。我想将此列表拆分为列表列表,如下所示:

[['text_1.jpg', 'othertext_1.jpg'], ['text_2.jpg', 'othertext_2.jpg'], ...]

这些子列表基于下划线后的整数。我目前这样做的方法是首先根据上面第一个列表示例中所示的数字对列表进行排序,然后遍历每个索引并将值复制到新列表中,如果它与前一个整数的值匹配。

我想知道是否有更简单的 Pythonic 方式来执行此任务。

标签: pythonlist

解决方案


尝试:

import re

lst = ["text_1.jpg", "othertext_1.jpg", "text_2.jpg", "othertext_2.jpg"]

r = re.compile(r"_(\d+)\.jpg")
out = {}
for val in lst:
    num = r.search(val).group(1)
    out.setdefault(num, []).append(val)

print(list(out.values()))

印刷:

[['text_1.jpg', 'othertext_1.jpg'], ['text_2.jpg', 'othertext_2.jpg']]

推荐阅读