0

我想知道是否有一种“智能”方式(一个正则表达式)从以下段落中提取 ID:

...
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif';
...

结果应该是一个包含1260089and的列表1260090。ID 的计数可能高达 10。

我需要类似的东西:

re.findall('imgList = (some expression)', string)

有任何想法吗?

4

4 回答 4

1

最好是使用单个正则表达式查找所有数字。我呼吁重新findall

>>> imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
>>> import re
>>> re.findall('optimized/([0-9]*)_fpx', imgList)
['1260089', '1260090']

您当然可以使正则表达式更强大,但如果数据如您所指,这就足够了。

于 2013-10-17T11:50:06.967 回答
0
import re

s = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'

print(re.findall(r'(\d+)_fpx.tif', s))
于 2013-10-17T11:52:25.387 回答
0

如果optimzed/无法_fpx确保零件并且 ID 在 7 到 10 位之间,您可以执行类似的操作

import re
re.findall('[\d]{7,10}', imgList)

这将在字符串中找到一个 7 到 10 位数字,因此,将排除 0-6 位或超过 10 位数字的 ID。

于 2013-10-17T12:01:55.730 回答
0
import re
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
re.findall(r'([0-9]){7}',imgList)

['1260089', '1260090']

代码只能满足你的情况。

于 2013-10-17T13:22:06.343 回答