我想知道是否有一种'智能'方式(一个正则表达式)从以下段落中提取ID:
...
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif';
...
结果应该是包含1260089
和1260090
的列表。 ID的数量可能最多为10个。
我需要类似的东西:
re.findall('imgList = (some expression)', string)
有什么想法吗?
答案 0 :(得分:1)
最好是使用单个正则表达式查找所有数字。我呼吁re.findall
>>> imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
>>> import re
>>> re.findall('optimized/([0-9]*)_fpx', imgList)
['1260089', '1260090']
你当然可以强化正则表达式,但如果数据符合你的指示,那就足够了。
答案 1 :(得分:0)
import re
s = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
print(re.findall(r'(\d+)_fpx.tif', s))
答案 2 :(得分:0)
如果未确保optimzed/
和_fpx
部分且ID在7到10位之间
你可以做点什么
import re
re.findall('[\d]{7,10}', imgList)
这将在字符串中找到7到10位数字,因此,将排除0-6或10位以上的ID。
答案 3 :(得分:0)
import re
imgList = '9/optimized/1260089_fpx.tif,0/optimized/1260090_fpx.tif'
re.findall(r'([0-9]){7}',imgList)
['1260089', '1260090']
代码只能满足您的情况。