在Python中反转文件中的文本列

在Python中反转文件中的文本列,python,Python,我正在写一个程序来重新格式化一个文本文件。旧文件包含两列文本,如下所示 Take 3 29 1001 83.489601 279.859650 1.000000 1002 83.489594 271.848480 0.997735 1003 83.489594 263.837311 0.997337 1004 83.489594 256.076111 0.996816 1005 83.364594 248.189941 0.995626 1006 83.364594 240.178787 0.9

我正在写一个程序来重新格式化一个文本文件。旧文件包含两列文本,如下所示

Take
3
29
1001 83.489601 279.859650 1.000000
1002 83.489594 271.848480 0.997735
1003 83.489594 263.837311 0.997337
1004 83.489594 256.076111 0.996816
1005 83.364594 248.189941 0.995626
1006 83.364594 240.178787 0.994840   
我的程序当前以我想要的格式将其写入一个新文件,并添加一些行。然后看起来是这样的:

clip
Values 12
trick, pos, ypos, similarity
1001 83.489601 279.859650 1.000000
1002 83.489594 271.848480 0.997735
1003 83.489594 263.837311 0.997337
1004 83.489594 256.076111 0.996816
1005 83.364594 248.189941 0.995626
1006 83.364594 240.178787 0.994840
我现在需要做的是反转新文件第三列数字的垂直顺序。结果应该是这样的:

clip
Values 12
trick, pos, ypos, similarity
1001 83.489601 240.178787 1.000000
1002 83.489594 248.189941 0.997735
1003 83.489594 256.076111 0.997337
1004 83.489594 263.837311 0.996816
1005 83.364594 271.848480 0.995626
1006 83.364594 279.859650 0.994840
我可以把第三组数字一行一行地分开,但我不知道该如何把那列写回正确的位置。文件中有多个块,它们的长度不同。我只是需要一个方向开始工作,因为我现在完全迷路了。我应该考虑什么样的功能来帮助我实现这一点?任何帮助都将不胜感激。我不熟悉编码,正在使用Python 3.2.2。步骤如下:

  • 阅读每一行,将其拆分为字段
  • 将结果累积到列表列表中
  • 使用
    zip(*t)
    转换数组
  • 选择适当的行(以前是列),然后使用list.reverse
  • 转换回列格式
  • 将行写入磁盘
下面是一个例子:

 >>> s = '''\
 1001 83.489601 279.859650 1.000000
 1002 83.489594 271.848480 0.997735
 1003 83.489594 263.837311 0.997337
 1004 83.489594 256.076111 0.996816
 1005 83.364594 248.189941 0.995626
 1006 83.364594 240.178787 0.994840
 '''.splitlines()
 >>> result = []
 >>> for line in s:
         result.append(line.split())


 >>> t = zip(*result)
 >>> t[2] = t[2][::-1]
 >>> result = zip(*t)
 >>> for row in result:
         print ' '.join(row)


 1001 83.489601 240.178787 1.000000
 1002 83.489594 248.189941 0.997735
 1003 83.489594 256.076111 0.997337
 1004 83.489594 263.837311 0.996816
 1005 83.364594 271.848480 0.995626
 1006 83.364594 279.859650 0.994840