2015-09-14 14 views
7

Tôi hiện đang đối mặt với vấn đề mà tôi có một chuỗi trong đó tôi muốn trích xuất chỉ số đầu tiên. Bước đầu tiên của tôi là trích xuất các số từ chuỗi.chỉ nhận được số đầu tiên từ chuỗi trong Python

Headline = "redirectDetail('27184','2 -New-York-Explorer-Pass')" 
print (re.findall('\d+', headline)) 
Output is ['27184', '2'] 

Trong trường hợp này nó trả lại cho tôi hai con số nhưng tôi chỉ muốn có chữ số đầu tiên "27184".

Do đó, tôi đã cố gắng với đoạn mã sau:

print (re.findall('/^[^\d]*(\d+)/', headline)) 

Nhưng Nó không làm việc:

Output:[] 

Can you guys giúp tôi ra? Bất kỳ phản hồi nào được đánh giá cao

+1

'>>> re.search (r '\ d +', Headline) .group (0) ' 27184'' – Kasramvd

+0

'in (re.findall (r '^ [^ \ d] * (\ d +)', tiêu đề))' –

+0

Bạn đang sử dụng 'findall', tìm tất cả các lần xuất hiện. Nhân tiện, các biểu thức chính quy của Python không yêu cầu các ký tự '/'. –

Trả lời

10

Chỉ cần sử dụng re.search để dừng kết hợp khi tìm thấy kết quả phù hợp.

re.search(r'\d+', headline).group() 

hay

Bạn phải loại bỏ các dấu gạch chéo có mặt trong regex của bạn.

re.findall(r'^\D*(\d+)', headline) 
+0

Tuyệt vời. Nó đã làm việc. Cảm ơn –

1
re.search('[0-9]+', headline).group() 
2

Giải pháp mà không regex (không nhất thiết phải tốt hơn):

import string 

no_digits = string.printable[10:] 

headline = "redirectDetail('27184','2 -New-York-Explorer-Pass')" 
trans = str.maketrans(no_digits, " "*len(no_digits)) 

print(headline.translate(trans).split()[0]) 
>>> 27184 
Các vấn đề liên quan