我有一个包含此格式数据的csv文件,
我想从 C列中提取数据并将其写入新的csv文件,如下所示,
所以我需要做两件事:
我需要每隔22行转换一次这些数据,然后从excel中的B2位置开始填充行,然后填写B3,B4等......
很明显,我必须循环遍历每一行才能有效地执行此操作,但我不知道如何在python中应用csv模块。
我应该下载xlrd软件包,还是只能使用内置的csv模块来处理它?</ p>
我在Windows 8.1 x64下使用python 2.7.6和pyscripter。随意给我任何建议,非常感谢!
答案 0 :(得分:1)
阅读the csv python documentation。
使用csv reader迭代行的简单方法:
import csv
X = []
spamreader = csv.reader('path_to_file/filename.csv',delimiter=',')
for row in spamreader:
X.append(row)
这将创建一个包含所有csv数据的变量。文件的结构将使其难以阅读,因为cell_separator是','但每个单元格中也有多个逗号,并且由于括号,将存在需要一些清理的字符串和数字数据的混合。如果您有权重新格式化csv,如果每个单元格看起来像1,2,0.01而不是(1,2,0.01)可能更容易,也可以考虑在单元格之间使用不同的分隔符,例如';'。
如果不期待一些繁琐的数据清理,请务必阅读上面链接的文档。
编辑:尝试以下
import csv
X = []
with open('path_to_file/filename.csv','rb') as csvfile:
spamreader = csv.reader(csvfile,delimiter=',')
for row in spamreader:
rowTemp = []
for i in range(len(row)):
if (i+1)%3==0: #gets every third cell
rowTemp.append(row[i])
X.append(rowTemp)
这是所有距离值的矩阵。然后尝试:
with open('path_to_output_file/output_file.csv','wb') as csvfile:
spamwriter = csv.writer(csvfile,delimter=',')
for sublist in X:
spamwriter.writerow(sublist)
不确定这是否正是您正在寻找的,但它应该接近。它输出一个剥离了所有节点对的csv文件