Dr.Livsi
Апрель 2, 2010 23:01:07
Доброго всем времени суток!
Есть задача: нужно в списке a=, сделать корректировки, так что бы получилось: b=. Насколько я понимаю, здесь надо использовать регулярные выражения. Однако, прочитав главу про регулярные выражения так и не понял, как их использовать. Просветите, пожалуйста!
sp3
Апрель 3, 2010 01:09:20
а не проще использовать split ?
Dr.Livsi
Апрель 3, 2010 08:06:22
может и проще, вопрос как?
MapaT
Апрель 3, 2010 08:30:38
b = ['Азбука_' + s.rsplit('_', 1)[-1] for s in a]
Dr.Livsi
Апрель 3, 2010 12:28:06
нет, не вариант: ‘_’ может повторятся неоднократно. Т.е. a=
o7412369815963
Апрель 3, 2010 12:39:32
Dr.Livsi
нет, не вариант: ‘_’ может повторятся неоднократно. Т.е. a=
а это уже другая задача,
напиши сначала все возможные варианты, а то после очередного решения ты ещё что-нибудь придумаешь.
ЗЫ: с тек. условием можно использовать split('_',3) вместо rsplit('_', 1)
Dr.Livsi
Апрель 3, 2010 18:51:46
боюсь, что максимально точно не смогу обозначить задачу - ибо она находится на работе :))) Поэтому вполне может появиться еще какое-нибудь условие. Во всяком случае попробую решить ее с помощью split. И еще, покажите, пожалуйста, как здесь можно использовать регулярные выражения? Меня, собственно, интересует синтаксис.
pasaranax
Апрель 3, 2010 20:53:10
for i in a:
b.append(re.sub("Букварь_\d+", "Азбука", i))
Dr.Livsi
Апрель 3, 2010 21:43:58
pasaranax, отлично! Получилось. Большое всем спасибо!
pasaranax
Апрель 4, 2010 00:39:30
А регулярками нагляднее выходит, но вот так должно быть быстрее:
for i in a:
b.append("Азбука_" + "_".join(i.split("_")[2:]))