2014-02-13 92 views
2

這裏之後的字符串正則表達式找到工作:關鍵字

Sector: id1 
    Name: name1 
    Data: data1 
Sector: id2 
    Name: name2 
    Data: data2 

我怎樣才能得到只有names,這是Name:後... 也許與正則表達式?但不知道如何!?

我需要它來獲取Android虛擬設備列表的輸出的名稱。 我需要它編程一個android編程工具。

回答

3

使用re.findall

>>> import re 
>>> s = '''Sector: id1 
    Name: name1 
    Data: data1 
Sector: id2 
    Name: name2 
    Data: data2''' 
>>> re.findall(r'\bName: (.*)', s) 
['name1', 'name2'] 
+0

你能解釋一下我的語法請 – Tekkzz

+0

@Tekkzz HTTP: //regex101.com/r/kZ1kL1 –

+0

+1 for regex101 – zhangxaochen

0

不要使用正則表達式,只是環比線:

names = [] 
for line in openfileobj: 
    if line.strip().startswith('Name:'): 
     names.append(line.split(':', 1)[-1].strip()) 

其中openfileobj是一個開放的文件對象(open()調用的返回值) ,或者其他序列的行。

0

這裏的另一個想法

(Name:)(.*?)(\n) 

再拿到2組

0

沒有必要使用re.split,只是內置str.split

In [237]: s=''' 
    ...: Sector: id1 
    ...:  Name: name1 
    ...:  Data: data1 
    ...: Sector: id2 
    ...:  Name: name2 
    ...:  Data: data2 
    ...: ''' 

In [238]: [i.split(': ', 1)[1] for i in s.split('\n') if i.strip().startswith('Name:')] 
Out[238]: ['name1', 'name2']