Python:重写具有元组的文本文件

时间:2013-02-12 19:19:09

标签: 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

1 个答案:

答案 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