在Python中将文本文件的列拆分为行
我有一个文本文件,内容大概是这样的:
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行,然后导出到一个文本文件里。
10 20 30
40 50 60
70 80 90
这只是一个例子。我的目标是把一列有675311个值的数据分成16471行,每行41个值。所以在“I”这一列的前41个值会成为第一行。
3 个回答
0
我做的事情是,先把你想写入文本文件的所有数字列成一个列表。然后在另一个循环中打开输出文本文件,逐个遍历这个列表(因为你想每三个数字换一行,所以我用的是索引)。接着,我定义了一个局部变量j,它的值比i大1。我用这个变量来检查i + 1是否是3的倍数(因为我从0开始,每三次循环加1就会变成3的倍数)。如果是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(' ')
0
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种特定的格式。
这种格式就像是一个标准,让不同的程序能够顺利地交流。比如说,如果你在网上购物,网站会把你的订单信息转换成一种格式,这样他们的系统才能处理你的订单。
在代码中,我们常常会看到一些函数或者方法,它们的作用就是将数据转换成我们需要的格式。这样做的好处是,可以避免因为数据格式不一致而导致的错误。
总之,处理数据时,确保它们的格式正确是非常重要的,这样才能让程序正常运行。
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']]
0
如果你使用 numpy,这就简单多了,而且可能更灵活:
编辑:增加了选择要提取哪一列和输出表格有多少列的参数。你可以根据需要调整,输出的形状可以随意改变。
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