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

2024-06-25 07:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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,并返回这些int的列表。你知道吗

经过一番研究,我想出了这个解决方案,但我想知道是否有一个更优雅的/Python式的方法,可能使用列表理解?你知道吗

li = []
for f in files:
   tmp = re.search('iter_[\d]+.caffemodel', f).group()
   li.append(int(re.search(r'\d+', tmp).group()))

Tags: re列表netsnapshotfileslitmpint
3条回答

只需添加另一个可能的解决方案:将文件名连接到一个大字符串中(看起来像是以h5结尾的all,因此没有创建不需要的匹配的危险),并在该字符串上使用re.findall

import re
li = [int(d) for d in re.findall(r'iter_(\d+)\.caffemodel', ''.join(files))]

也可以使用lookbehind assertion

regex = re.compile("(?<=iter_)\d+")

for f in files:
     number = regex.search(f).group(0)

仅使用:

li = []
for f in files:
   tmp = int(re.search('iter_(\d+)\.caffemodel', f).group(1))
   li.append(tmp)

如果将表达式放入括号中,它将创建另一组匹配的表达式。你知道吗

相关问题 更多 >