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

2024-09-29 02:19:04 发布

您现在位置: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

我可以把第三组数字一行一行地分出来,但我不知道该如何把那一列写回正确的位置。文件中有多个这样的块,它们的长度各不相同。我只是需要一个方向开始工作,因为我现在完全迷路了。我应该看什么样的函数来帮助我完成这个任务?任何帮助都将不胜感激。我是新的编码和使用python3.2.2


Tags: 文件pos文本程序clip顺序格式数字
1条回答
网友
1楼 · 发布于 2024-09-29 02:19:04

步骤如下:

  • 读每一行,把它分成几个字段
  • 将结果累加到列表中
  • 使用zip(*t)转置数组
  • 选择适当的行(以前是列),然后使用列表.反转
  • 换回列格式
  • 将行写入磁盘

举个例子:

 >>> 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

相关问题 更多 >