2013-05-01 2 views
4

Мне нужна помощь в регулярном выражении или Python для извлечения подстроки из набора строк. Строка состоит из буквенно-цифровых символов. Я просто хочу, чтобы подстрока начиналась после первого пробела и заканчивалась перед последним пробелом, как показано ниже.Извлечение подстроки после первого пространства в Python

Example 1: 

A:01 What is the date of the election ? 
BK:02 How long is the river Nile ?  

Results: 
What is the date of the election 
How long is the river Nile 

Пока я нахожусь в нем, есть ли простой способ извлечения строк до или после определенного символа? Например, я хочу, чтобы извлечь дату или день, как из строки, как те, приведенные в примере 2.

Example 2: 

Date:30/4/2013 
Day:Tuesday 

Results: 
30/4/2013 
Tuesday 

Я на самом деле читать о регулярных выражениях, но это очень чуждо мне. Благодарю.

ответ

6

Я рекомендую использовать split

>>> s="A:01 What is the date of the election ?" 
>>> " ".join(s.split()[1:-1]) 
'What is the date of the election' 
>>> s="BK:02 How long is the river Nile ?" 
>>> " ".join(s.split()[1:-1]) 
'How long is the river Nile' 
>>> s="Date:30/4/2013" 
>>> s.split(":")[1:][0] 
'30/4/2013' 
>>> s="Day:Tuesday" 
>>> s.split(":")[1:][0] 
'Tuesday' 
+0

Спасибо! Ваш код делает именно то, что мне нужно, не используя регулярное выражение. Я не пробовал регулярное выражение. – Cryssie

1

Нет необходимости вставлять в регулярное выражение, если это все, что вам нужно; Вы можете использовать str.partition

s = "A:01 What is the date of the election ?" 
before,sep,after = s.partition(' ') # could be, eg, a ':' instead 

Если все, что вы хотите, это последняя часть, вы можете использовать _ в качестве заполнителя для «не все равно»:

_,_,theReallyAwesomeDay = s.partition(':') 
+5

не использовать '_', просто используйте' theReallyAwesomeDay = s.partition (':') [2] ' –

+0

@gnibble r - Я думаю, что '_' намного яснее, тем более, что обычно используется' start, _, end = s.partition (':') '(поэтому имеет смысл следовать одной и той же форме только для конца) – sapi

+0

Также очень часто используется '_' в качестве псевдонима для' gettext' –

5
>>> s="A:01 What is the date of the election ?" 
>>> s.split(" ", 1)[1].rsplit(" ", 1)[0] 
'What is the date of the election' 
>>> 
Смежные вопросы