2013-10-06 6 views
0

мне нужно разбить строку:Разбивает строку спутанность

Пример:

str = 'mink.microctr.fit.edu - - [21/Jun/2000:20:21:36 -0400] "GET/HTTP/1.1" 200 1786' 

Из приведенной выше строки мне нужно извлечь "21/Jun/2000".

Использование:

str.rstrip().split()[3] 

выход "[21/Jun/2000".

Любая помощь в том, как это сделать?

+0

Способ, которым вы набрали это в своем сообщении, не будет действительной строкой python. Однако, если вы сделаете первый и последний символы символами '' 'вместо символов' '', то это допустимая строка. Знаете ли вы, почему? – Leonardo

+4

Не называйте переменную 'str'. Она переопределяет встроенный. – iCodez

+0

Как насчет 'str.split (':') [0] .split ('[') [1]'? – bbayles

ответ

0

Вы можете просто добавить [1:]:

str.rstrip().split()[3][1:] 
0

Вы должны использовать раскол или вы можете также получить подстроку? Если формат всегда выглядит так, то попробуйте следующее:

str.strip().split()[3][1:] 

Давайте разберем это вниз: str.strip() отсекает все пробелы. Затем вы используете split(), который разбивается на любые пробелы. Это то, что у вас есть. Теперь str[1:] говорит «взять подстроку, начиная со второго символа в строке до конца строки

2

Я хотел бы использовать регулярные выражения:.

>>> import re 
>>> r = 'mink.microctr.fit.edu - - [21/Jun/2000:20:21:36 -0400] "GET/HTTP/1.1" 200 1786' 
>>> print re.search(r'\[(.*?):', r).group(1) 
21/Jun/2000 

Также не называют строки str, это переопределяет встроенный тип

+0

«Я бы использовал регулярные выражения» - теперь у вас есть 2 проблемы! (я парень.) – forivall

0

Используйте регулярное выражение так:

(\d{2}/[A-Za-z]{3}/\d{4}) 

Прочтите об использовании regex with python, если у вас есть пе ver сделал это.

+0

Некоторые объяснения были бы хорошими. – Johan

+0

@Johan Я добавил ссылку, чтобы объяснить использование регулярных выражений в Python. все, что необходимо для решения проблемы, было в ответе, если человек хочет просто google «regex» или «regex python». –

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