我有一个 files 列表,其中包含以下格式的字符串:
files = ['/misc/lmbraid17/bensch/u-net-3d/2dcellnet/2dcellnet_v6w4l1/2dcellnet_v6w4l1_snapshot_iter_418000.caffemodel.h5',
'/misc/lmbraid17/bensch/u-net-3d/2dcellnet/2dcellnet_v6w4l1/2dcellnet_v6w4l1_snapshot_iter_502000.caffemodel.h5', ...]
我想提取 iter_ 和 .caffemodel 之间的 int 并返回这些整数的列表。
经过一些研究,我想出了这个解决方案,但我想知道是否有更优雅/pythonic 的方式来做到这一点,可能使用列表理解?
li = []
for f in files:
tmp = re.search('iter_[\d]+.caffemodel', f).group()
li.append(int(re.search(r'\d+', tmp).group()))
请您参考如下方法:
只是为了添加另一种可能的解决方案:将文件名连接成一个大字符串(看起来像 all 以 h5 结尾,因此不存在创建不需要的匹配项的危险)并使用 re.findall 关于:
import re
li = [int(d) for d in re.findall(r'iter_(\d+)\.caffemodel', ''.join(files))]
