1

別のスクリプトで作成したテキスト ファイルがいくつかありますが、テキスト ファイルを希望どおりに配置する方法がわかりません。

テキスト ファイルには次の 3 つの列があります。

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

X/Y/Z 値は任意の数値です。

このファイルにはいくつかの行があり、Z リストの長さはさまざまです。私が望むのは、各行に 1 つの Z 値のみが存在するように Z リストを分離することですが、Z リストにある要素の数に基づいて X/Y 値が繰り返されます。

たとえば、テキスト ファイルの最初の 2 行は次のとおりです。

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

2行を次のようにしたいと思います。

    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_evalと の使用str.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 に答える