2011-08-18 89 views
1

解析由python中的空格隔開的浮點數列表的最佳理由是什麼?用於解析python中浮點數列表的正則表達式

我有這樣的行將從源出來:

string = " 4 1.6 8.29 0 0 3.55e-15 -1.28e-13 " 

與未知數量的空格分開的數字和字符串的beggining或結束。

我通常只是在使用numbers = map(float, string.split(" "))時,我可以保證數字之間只有一個空格,並且字符串的開頭或結尾不會有空格。我並不擅長正則表達式,但有人建議我使用re.split("\s+", string),但這樣做不起作用,因爲有時我在結果列表的開始處得到空字符串。

我現在在使用:re.split("\s+")但這不起作用,因爲有時我在結果列表的開始處得到空字符串。

我現在使用:

res = map(float, re.findall("\d+\S*\d*", string) 

這正莫名其妙,但看起來脆弱和醜陋的我。它可以匹配許多不能產生數字的字符串。

什麼是最好的正則表達式模式,將總是匹配整數和浮點數有或沒有指數表示法,以便我可以使用re.findall(patt, string)並安全地恢復數字列表?

回答

11

不需要正則表達式。無需任何參數即可簡單使用string.split();它將分割任何數量的空白。

2

使用str.split()方法與列表解析的一個例子 - 輕度更Python,和IMHO更清晰,比map

>>> string = " 4 1.6 8.29 0 0 3.55e-15 -1.28e-13 " 
>>> floats = [float(x) for x in string.split()] 
>>> floats 
[4.0, 1.6000000000000001, 8.2899999999999991, 0.0, 0.0, 3.5500000000000001e-15, 
-1.2800000000000001e-13]