2013-02-12 60 views
1

我在一個單獨的腳本中創建了幾個文本文件,但是我無法按照需要的方式排列文本文件。Python:重寫一個包含元組的文本文件

文本文件有三列:

X,Y,[Z1,Z2,Z3,...]

當X/Y/Z值是任意數字。

該文件中有幾行,Z列表長度各不相同。我想要的是Z列表是分開的,這樣每行只有一個Z值,但X/Y值會根據Z列表中有多少元素重複。

例如,文本文件的前兩行是:

2306 3481 [2, -3, 82.6, 0.2] 
    2336 3408 [9, 0] 

我想對於兩行變成:

2306 3481 2 
    2306 3481 -3 
    2306 3481 82.6 
    2306 3481 0.2 
    2336 3408 9 
    2336 3408 0 

回答

2

使用ast.literal_evalstr.split

with open("abc.txt") as f: 
    for line in f : 
     line=line.split(None,2) #returns ['2306', '3481', '[2, -3, 82.6, 0.2]'] 
     a,b=line[:2] 
     lis=literal_eval(line[-1]) 
     for x in lis: 
      print a,b,x #or write to a new file 
    ....:    
2306 3481 2 
2306 3481 -3 
2306 3481 82.6 
2306 3481 0.2 
2336 3408 9 
2336 3408 0 
+0

這個很漂亮!非常感謝你! – user1620716 2013-02-12 19:34:25

+0

@ user1620716很高興幫助。 :) – 2013-02-12 19:39:21

相關問題