Skip to main content
 首页 » 编程设计

python之在python中的两个不同字符串之间提取int

2025年05月04日14lyj

我有一个 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))]