繁体   English   中英

反转Python中文件中的文本列

[英]Reversing a column of text from a file in 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.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM