作为数组读入文件然后重新排列列

时间:2014-09-15 14:16:52

标签: python file-io

我想在一个包含多列的文件中读取并写出一个新文件,其列的顺序与原始文件的顺序不同。其中一列还有一些我想在新文件中删除的额外文本。

例如,如果我在文件中读取:data.txt

1   6   omi=11   16   21   26
2   7   omi=12   17   22   27
3   8   omi=13   18   23   28
4   9   omi=14   19   24   29
5  10   omi=15   20   25   30

我希望写入的文件是:dataNEW.txt

26   1   11   16
27   2   12   17
28   3   13   18
29   4   14   19
30   5   15   20

在督察G4dget的帮助下,我想出了这个:

import csv as csv
import sys as sys

infile = open('Rearrange Column Test.txt')
sys.stdout = open('Rearrange Column TestNEW.txt' , 'w')
for line in csv.reader(infile, delimiter='\t'):
    newline = [line[i] for i in [5, 0, 2, 3]]
    newline[2] = newline[2].split('=')[1]
    print newline[0], newline[1], newline[2], newline[3]
sys.stdout.close()

是否有更简洁的方法来获得没有逗号的输出,而不是将每个行索引从0列到总行数?

1 个答案:

答案 0 :(得分:0)

import csv

with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
    writer = csv.writer(outfile)
    for line in csv.reader(infile, delimiter='\t'):
        newline = [line[i] for i in [-1, 0, 2 3]]
        newline[2] = newline[2].split('=')[1]
        writer.writerow(newline)