2013-05-03 3 views
-1

Строка находится в следующем формате.Разбиение на python

A1:::x1:::B1.A2:::x2::x3::x4:::B2.A3:::x5::x6::x7:::B3. 

Выходной сигнал после того, как расщепление должно быть

['x1:::B1', 'x2::x3::x4:::B2', 'x5::x6::x7:::B3'] 

Примечание:

  • А, х отделяют :::
  • x1, x2 .... хп отделены друг от друга ::
  • x, B разделен :::
  • B, А separared по .
+1

А что вы пытались до сих пор матом? В чем проблема с этим? Вы обнаружите, что люди здесь (как я) хотят, чтобы вы проявили определенные усилия, а не просто попросили сделать свою домашнюю работу. –

+0

@Puciek: Это было не мое намерение. Но, я ценю ваше предложение в целом. – Srik

ответ

2

Он смотрит на меня, как вы хотите разделить первое на . (удаление пустых записей), а затем разделить один раз на ::: оставив только второй элемент. В коде, который выглядит следующим образом:

s = 'A1:::x1:::B1.A2:::x2::x3::x4:::B2.A3:::x5::x6::x7:::B3.' 
slist = (substr for substr in s.split('.') if substr) 
result = [x.split(":::",1)[1] for x in slist] 

Как было отмечено в комментариях, мы можем утверждать это более лаконично:

result = [x.split(":::",1)[1] for x in s.split('.') if x] 
+0

+1, но я бы сделал '[x.split (" ::: ", 1) [1] для x в s.split ('.'), Если x]' – jamylak

+0

@jamylak - Да, я полагаю, это было бы сделай это, не так ли :). Благодарю. Я думаю, что я оставлю первую версию, так как поток логики в тексте немного более естественно, но я также включу ваше обновление. Другое, что мне нравится в первой версии, заключается в том, что упростить добавление проверки, чтобы убедиться, что мы получаем элементы, которые можно разделить на ':::' на 2 части. – mgilson