1

我有一些在单独的脚本中创建的文本文件,但我不知道如何以我想要的方式排列文本文件。

文本文件包含三列:

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

其中 X/Y/Z 值是任意数字。

这个文件有几行,Z-lists 有不同的长度。我想要将 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
4

1 回答 1

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
于 2013-02-12T19:25:00.540 回答