2014-04-20 17 views
7

Tôi cần giới hạn re.findall để tìm 3 kết quả phù hợp đầu tiên và sau đó dừng lại.Tìm các kết quả phù hợp đầu tiên với re.findall

ví dụ

text = 'some1 text2 bla3 regex4 python5' 
re.findall(r'\d',text) 

sau đó tôi nhận được:

['1', '2', '3', '4', '5'] 

và tôi muốn:

['1', '2', '3'] 
+0

Bạn có thể có một cái nhìn ở đây: http://stackoverflow.com/questions/16235770/how-to- giới hạn-regexs-findall-phương pháp –

+1

hoặc tốt hơn ở đây: http://stackoverflow.com/questions/11902378/python-regular-expressions-limit-results –

Trả lời

8

Để tìm N phù hợp và dừng, bạn có thể sử dụng re.finditeritertools.islice:

>>> import itertools as IT 
>>> [item.group() for item in IT.islice(re.finditer(r'\d', text), 3)] 
['1', '2', '3'] 
8

re.findall trả về một danh sách, vì vậy giải pháp đơn giản nhất là nên chỉ sử dụng slicing :

>>> import re 
>>> text = 'some1 text2 bla3 regex4 python5' 
>>> re.findall(r'\d', text)[:3] # Get the first 3 items 
['1', '2', '3'] 
>>> 
Các vấn đề liên quan