python - 根据字符串中的整数将列表拆分为子列表
问题描述
我有一个这样的字符串列表:
['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 方式来执行此任务。
解决方案
尝试:
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']]
推荐阅读
- angular - 通过其实例从另一个组件调用一个组件方法不起作用
- python - 在windows上使用linux cookie时的解密问题
- authorization - 打开策略代理策略管理
- c# - Uri 图像未显示在 android 设备上 (Xamarin)
- c# - Xamarin:从浏览器重定向到本机应用程序不起作用
- python - 根据现有单元格下的值创建一个新列
- wpf - FlowDocument 中的瓦片包装序列
- reactjs - 类型“字符串”不可分配给类型 keyof [Type]
- javascript - 异步等待中的尝试捕获问题
- javascript - 结合多个具有多个属性的 if 语句