2017-09-25 89 views

回答

5

我能想到的兩種方法涉及硬編碼索引。

選項1
str.split

numbers = [x for x in string.split() if x.isdigit()] 
print(numbers) 
['65'] 

選項2
re.findall

import re 

numbers = re.findall(r'\b\d+\b', string) 
print(numbers) 
['65'] 

正則表達式的詳細

\b  # word boundary 
\d+  # match 1 or more digits 
\b  # word boundary 

注意,如果你只想返回那些沒有更大的單詞的一部分號碼\b字邊界應使用(例如,3D將不被計算這裏)。

+0

選項2更好,因爲如果數字位於字符串中的不同位置,它可以很好地工作。 – kaza

+0

@bulbus有趣。你爲什麼說選項2更好?對於「這個人是三條腿65」,輸出是相同的。 –

+0

道歉,我誤解'string.split()'splay所有字符!你是對的,都會給出相同的結果。 – kaza

2

這段短代碼如何?

man = 'The man is 65 or older' 
numbers = list(filter(str.isdigit, man.split(' '))) 
print(numbers[0]) 
+0

這個問題有其他約束,所以我這個答案並不是錯的。他/她問*給我65 *。 – Ho0ony

+1

@ Ho0ony按照你的邏輯,「男人[11:13]」應該是你的滿意答案:) –