2013-02-21 39 views
0

我有一個建立在我以前使用過的代碼上的問題。我有一個輸入文件,每行包含6段數據。問題是,並不總是使用空格作爲分隔符來分割每一行,我也想以4/4/4/8/8/4字符的不平坦步驟分割該行,即:不均勻的字符行拆分

' 0 0 -16-50.6123 115.393 2' 

將被分成(0,0,-16,-50.6123,115.393,2)。然後,我使用這些數據來形成一個字典,其中鍵是前三個數字[0,0,-16]的數組,返回值是最後三個數字[-50.6123,115.393,2]的數組。

我以前使用的代碼時,我的數據總是由空白(我無法更改,因爲它來自其他地方)如下所示。有沒有一種很好的方式來修改我已經有的代碼來適應新的不均勻分割線條。

謝謝!

def formatter(lines): 
    for line in lines: 
     if not line.strip(): continue 
     yield [to_float(item) for item in line.split()] 

dct1 = {} 
with open('test.txt') as f1: 
    for row in formatter(f1): 
     dct1[tuple(row[:3])] = row[3:6] 
+0

找到分隔符或使用切片 – dmg 2013-02-21 15:57:22

回答

0

如果你知道切片的寬度,我只是把切片切成片。這應該給你一個想法:

my_string =' 0 0 -16-50.6123 115.393 2' 
widths=[4,4,4,8,8,4] 
my_start=0 
my_end=0 
for w in widths: 
    my_end+=w 
    print my_string[my_start:my_end] #or do whatever you want 
    my_start+=w 

輸出:

0 
    0 
-16 
-50.6123 
115.393 
    2