我在一个单独的脚本中创建了一些文本文件,但是我对如何以我想要的方式排列文本文件感到茫然。
文本文件有三列:
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
答案 0 :(得分: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