2013-02-16 2 views
0

Есть, есть лучший способ извлечь строки:извлекая регулярное выражение из строки

'Found 1 items\ndrwxr-xr-x - hadoop supergroup   0 2013-02-16 13:21 /user/hadoop/wiki\n' 

Все строки будут как:

'Found **n** items\n**permissions** - **username** **group**   **notsurewhatthisis** **date** **time** **folders(or file)**\n' 

Прямо сейчас .. Я разделив его как:

line = line.split() 
num_items = int(line[1]) 
permissions = line[3] 

и т.д ..

Итак, в основном это не разумное решение.

Попытка выяснить, существует ли способ «питона».

+1

Регулярного выражения обычно используется говорить о специальном виде представления для автоматов конечного состояния для соответствия строкам. См. Http://en.m.wikipedia.org/wiki/Regular_expression. Вы не используете это для обозначения этого, что делает ваш вопрос запутанным для других народов. –

+0

@Sylvain Defresne Я только что поддержал 3 ваших ответа за то, что сделал вышеприведенный комментарий. – eyquem

ответ

2
ss = ('Found 1 items\n' 
     "drwxr-xr-x - hadoop supergroup   " 
     '0 2013-02-16 13:21 /user/hadoop/wiki\n') 

('Found **n** items\n' 
'**permissions** - **username** **group**   ' 
'**notsurewhatthisis** **date** **time** **folders(or file)**\n') 

import re 

r = re.compile('Found +(\d+) +items *\n *(.+?) *- ') 

print r.search(ss).groups() 

ss является строкой
'Found +(\d+) +items *\n *(.+?) *- ' является строка, которая используется в качестве шаблона для создания объекта регулярного выражения
r является регулярным выражением, объект, который не является строкой

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