我想知道是否有一种“智能”方式(一个正则表达式)从以下段落中提取 ID:
...
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif';
...
结果应该是一个包含1260089
and的列表1260090
。ID 的计数可能高达 10。
我需要类似的东西:
re.findall('imgList = (some expression)', string)
有任何想法吗?
我想知道是否有一种“智能”方式(一个正则表达式)从以下段落中提取 ID:
...
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif';
...
结果应该是一个包含1260089
and的列表1260090
。ID 的计数可能高达 10。
我需要类似的东西:
re.findall('imgList = (some expression)', string)
有任何想法吗?
最好是使用单个正则表达式查找所有数字。我呼吁重新findall
>>> imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
>>> import re
>>> re.findall('optimized/([0-9]*)_fpx', imgList)
['1260089', '1260090']
您当然可以使正则表达式更强大,但如果数据如您所指,这就足够了。
import re
s = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
print(re.findall(r'(\d+)_fpx.tif', s))
如果optimzed/
无法_fpx
确保零件并且 ID 在 7 到 10 位之间,您可以执行类似的操作
import re
re.findall('[\d]{7,10}', imgList)
这将在字符串中找到一个 7 到 10 位数字,因此,将排除 0-6 位或超过 10 位数字的 ID。
import re
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
re.findall(r'([0-9]){7}',imgList)
['1260089', '1260090']
代码只能满足你的情况。