在Python中从字符串中提取多个段

时间:2014-05-23 17:43:01

标签: python regex

我正在努力从多个目录中收集图像序列列表。我在Nuke(合成包)中使用TCL表达式来生成列出每个目录内容的sting。返回的字符串如下所示:

Draft {Test_02_v002_Global_alp_%04d.png 1-12} {Test_02_v002_Global_col_%04d.png 1-12} Thumbs.db

Draft和Thumbs.db是字符串中不需要的部分(目录中的非图像文件)。我想得到的是:

Test_02_v002_Global_alp_%04d.png 1-12 

Test_02_v002_Global_col_%04d.png 1-12

如果使用以下代码在目录中只有一个图像序列,我可以这样做:

start = "{"
end = "}"
re.search('%s(.*)%s' % (start, end), string).group(1) 

但是,当存在多个图像序列时,我无法弄清楚如何使其工作。

1 个答案:

答案 0 :(得分:2)

您可以使用re.findall

>>> from re import findall
>>> mystr = "Draft {Test_02_v002_Global_alp_%04d.png 1-12} {Test_02_v002_Global_col_%04d.png 1-12} Thumbs.db"
>>> findall("{(.*?)}", mystr)
['Test_02_v002_Global_alp_%04d.png 1-12', 'Test_02_v002_Global_col_%04d.png 1-12']
>>>