2013-08-06 140 views
0

我有一個包含字母和數字的字符串列表。我想搜索數字並讓他們回到我身邊。做這個的最好方式是什麼?我對Python非常陌生,我研究了正則表達式,現在我正在學習它們,但是我不知道什麼時候我可以在正則表達式中使用它們之前足夠好。Python中數字的搜索字符串

回答

5

要返回所有數字在所有字符串在一個名爲inputlist列表,你可以使用列表理解:

import re 

numbers = [int(num) for value in inputlist for num in re.findall('\d+', value)] 

這就引起我們的數字爲整數爲好。如果您需要浮點值(所以,在他們小數點的數字),添加上的圖案爲一個通過數字兩側小數點:

numbers = [float(num) for value in inputlist for num in re.findall('\d+(?:\.\d*)', value)] 

但是,如果你只是在尋找字符串數(而不是僅僅包含數字),str.isdigit()可能就足夠了:

numbers = [int(value) for value in inputlist if value.isdigit()] 

請注意,這不是比賽浮點數(str.isdigit()只有True如果所有字符都是數字;小數點不計數)。

1

您可以使用isdigit

numbers = [n for n in strings if n.isdigit()] 

如果你真的要分析他們:

numbers = [int(n) for n in strings if n.isdigit()] 

這是假設你只想要那些所有數字的字符串,你會想要忽略混合字母和數字的字符串。不幸的是,你的問題並不清楚你究竟想要什麼。您也沒有指定數字是否表示整數,或者它們可能表示浮點值。 :-(

+0

這個假設*整個值*是一個數字 –

+0

@Martijn彼得斯:我認爲這是一個*小*不清楚是否相關 – jason

+0

同意;請注意,該方法被稱爲'.isdigit ()',而不是'.isdigits()'。 –