2013-11-23 90 views
0

我是相當新的Python和我有一個C程序,它可以輸出花車的列表像這樣的:如何解析python列表中的浮動列表?

f11 
f12 
... 
f1n 

f21 
f22 
... 
f2m 

. 
. 
. 
fk1 
... 
fkl 

我想獲得這些花車進入名單列表:

[[f11,...], [f21, ...], ..., [fk1,...]] 

我有一個解決方案(使用特定的浮點數作爲分隔符),但它非常難看。輸入的格式是靈活的...有沒有簡單的解決方案?

+0

輸入中的橢圓和點實際上是你所得到的,還是你將它們包括在佔位符中?每組「浮點數」之間總是有兩條換行符? – Michael0x2a

+0

這是一個佔位符(儘管我不確定它是什麼意思):這是一個很長的浮動列表,所以我只是指出列表中繼續使用「...」。正如我所說,我可以根據需要輸出數據。我放了一個空行,但它可能是別的東西。 – matovitch

+1

他問我們應該怎麼知道什麼劃分了下一個漂浮物的子列表。他們之間是否有空行,或者... – roippi

回答

2

假設你的號碼是這個樣子:

1.435235 
3.23421 
4.523421 
42.3241 

-1.2342 
0.09901 
134134.2 

1.2342111 
13.111 
14.23521 

...其中每組號碼由兩個換行分隔,你可以有這樣的事情:

def parse_group(group): 
    return [float(n) for n in group.split('\n')] 

def get_numbers(string, separator='\n\n'): 
    groups = str.split(separator) 
    return [parse_group(group) for group in groups] 

上調用get_numbers你的功能應該產生類似於:

>>> print get_numbers(input) 
[[1.435235, 3.23421, 4.523421, 42.3241], [-1.2342, 0.09901, 134134.2], [1.2342111, 13.111, 14.23521]] 

這個數據每個組由兩個換行符(空行)分隔,但您可以相應地對其進行參數設置。