2013-02-13 5 views
1

У меня есть строка, такие, как показано ниже:расщепление строки в Python (2.7)

26 (passengers:22 crew:4) 

или

32 (passengers:? crew: ?) 

. То, что я ищу, - это разделить код так, чтобы извлекались только цифры, представляющие количество пассажиров и экипажа. Если это вопросительный знак, я бы посмотрел, чтобы его заменили на "".

Я знаю, что могу использовать string.replace ("?", "") Для замены? однако как мне поступить с извлечением числовых символов для экипажа или пассажиров соответственно? Числа могут варьироваться от двух цифр до трех, поэтому я не могу нарезать последние несколько символов из строки или в определенный интервал.

Заранее спасибо

+1

* Числа может варьироваться от двух цифр до трех *, противоречит вашему примеру; Я вижу цифру * 1 * цифра ('4'). Мой ответ предполагает, что 1 разряд тоже хорош. –

+0

@MartijnPieters Спасибо Martijn. Приведенные примеры представляют собой только две сотни сотен строк. Например, может быть запись для «экипажа: 135». – thefragileomen

+0

Да, и это 3 цифры. '4' является * одной * цифрой, но вы затем говорите, что цифры варьируются от двух до трех цифр, что означает, что' 4' не является допустимым числом. –

ответ

5

регулярное выражение, чтобы они соответствовали бы:

r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)' 

с некоторыми дополнительными пробелами толерантностью, брошенной в

Результаты:.

>>> import re 
>>> numbers = re.compile(r'\(\s*passengers:\s*(\d{1,3}|\?)\s+ crew:\s*(\d{1,3}|\?)\s*\)') 
>>> numbers.search('26 (passengers:22 crew:4)').groups() 
('22', '4') 
>>> numbers.search('32 (passengers:? crew: ?)').groups() 
('?', '?') 
+0

Спасибо за помощь. Оценил. – thefragileomen

Смежные вопросы