Форум сайта python.su
Суть задачи: Вводится строка разной длины и нужно в промежутке между двумя маркерами вытащить значения.
К примеру:
s1 = 'fklfkljfklsdlfIDsdjklfj24l&jksdfhsdf'
s2 = 'fnjksdfkljlIDfklsdfklsdf8t4jdkl&klsdjfklkfl'
s3 = 'mjsdklfksdlfksdlIDkjgkhdfgjkhdf2893rjkfnjfnjksefhis&fisdfklsdnfjkfy'
Собственно выделенное нужно вытащить. Маркер начала ID, маркер конца нужных нам данных &
Офлайн
>>> import re >>> s = "mjsdklfksdlfksdlIDkjgkhdfgjkhdf2893rjkfnjfnjksefhis&fisdfklsdnfjkfy" >>> re.findall(r"ID(.*)\&", s) ['kjgkhdfgjkhdf2893rjkfnjfnjksefhis']
Офлайн
тупо в лоб для этих примеров:
print(s1[s1.find('D')+1:s1.find('&')])
Офлайн
aybспасибо. А что делать если у меня в строке встречается более одного &, но самый ближайший к ID является концом нужных данных?
>>> import re
>>> s = “mjsdklfksdlfksdlIDkjgkhdfgjkhdf2893rjkfnjfnjksefhis&fisdfklsdnfjkfy”
>>> re.findall(r“ID(.*)\&”, s)
Отредактировано oreol (Окт. 31, 2016 17:29:16)
Офлайн
re.findall(r"ID(.*?)\&", s)
Офлайн