在Python中将文本文件-列拆分为行

在Python中将文本文件-列拆分为行,python,Python,我有一个txt文件,看起来像: X Y Z I 1 1 1 10 2 2 2 20 3 3 3 30 4 4 4 40 5 5 5 50 6 6 6 60 7 7 7 70 8 8 8 80 9 9 9 90 我想将第4列拆分为3行,并将其导出到txt文件 10 20 30 40 50 60 70 80 90 这只是一个例子。在我的目标中,我必须将包含675311个值的列拆分为包含41个值的16471行。因此,列I中的前41个值将是第一行。如果您使用,这很简单,而且可能更灵活: with o

我有一个txt文件,看起来像:

X Y Z I
1 1 1 10
2 2 2 20
3 3 3 30
4 4 4 40
5 5 5 50
6 6 6 60
7 7 7 70
8 8 8 80
9 9 9 90
我想将第4列拆分为3行,并将其导出到txt文件

10 20 30
40 50 60
70 80 90
这只是一个例子。在我的目标中,我必须将包含675311个值的列拆分为包含41个值的16471行。因此,列I中的前41个值将是第一行。

如果您使用,这很简单,而且可能更灵活:

with open ( 'in.txt' , 'r') as f:
    f.next() '# skip header
    l = [x.split()[-1] for x in f]
    print [l[x:x+3] for x in xrange(0, len(l),3)]
[['10', '20', '30'], ['40', '50', '60'], ['70', '80', '90']]
编辑:添加了用于选择要拾取的列以及输出表将具有多少列的参数。您可以将其更改为适合您希望输出的任何形状

import numpy as np

datacolumn = 3
outputcolumns = 3
data = np.genfromtxt('path/to/csvfile',skip_header=True)
column = data[:,datacolumn]
reshaped = column.reshape((len(column)/outputcolumns,outputcolumns))
np.savetxt('path/to/newfile',reshaped)
编辑:为了可读性,将注释与代码分开。以下是每一行的功能:

# Parse CSV file with header
# Extract 4th column
# Reshape column into new matrix
# Save matrix to text file

我所做的是,我列出了你想写入文本文件的所有数字,然后在另一个for循环中,在输出文本文件打开的情况下,我使用标记在该列表中循环,因为在每三个数字上,你都需要一个新行。然后我有一个局部变量,比我称之为j的变量多一个。我用它来检查I+1是否是3的倍数,因为我从0开始,每三次迭代+1都是3的倍数。我写了一个新行字符,继续我的路。如果不是3的倍数,我就写一个空格,然后继续前进

nums = []
with open ('input.txt' , 'r') as f:
    for line in f:
        s = line.split(' ')
        num = s[3]
        nums.append(num)
with open('output.txt', 'w') as f:
    for i in range(0, len(nums)):
        num = nums[i].strip('\n')
        f.write(num)
        j = i + 1
        if j%3 == 0:
            f.write('\n')
        else:
            f.write(' ')

重塑=列。重塑列/3,3如果我想将具有675311个值的列拆分为16471x41矩阵,我必须将这些值作为参数进行重塑?您是否在没有3行倍数的文件上尝试过此方法?使用参数概括示例,以控制要拾取的数据列以及输出的形状