【发布时间】:2015-09-25 11:13:16
【问题描述】:
我有一个 csv 文件,我想通过一次获取每一行来对其进行排序。在对行进行排序时,我想忽略空格(或空单元格)。另外,我想在排序时忽略第一行和第一列。 这就是我的代码的样子:
import csv, sys, operator
fname = "Source.csv"
new_fname = "Dest.csv"
data = csv.reader(open(fname,"rb"),delimiter=',')
num = 1
sortedlist = []
ind=0
for row in data:
if num==1:
sortedlist.append(row)
with open(new_fname,"wb") as f:
filewriter = csv.writer(f,delimiter=",")
filewriter.writerow(sortedlist[ind])
ind+=1
elif num > 1:
sortedlist.append(sorted(row))
with open(new_fname,"ab") as f:
filewriter = csv.writer(f,delimiter=",")
filewriter.writerow(sortedlist[ind])
ind+=1
num+=1
我能够忽略第一行。但是,我不确定在排序时如何忽略空格和第一列。欢迎任何建议。
【问题讨论】:
-
您能解释一下“排序时忽略空格”是什么意思吗?如果你有一行:A, 12, 4, 5, , , 7, 9, , 3 那么排序后应该如何?
-
空白是指空单元格(如果您在 ms-excel 中打开 csv 文件)。为此,它应该看起来像 3,4,5,7,912,A 并忽略所有 , , , ,
-
@Dennis 如果您忽略 CSV 中的列值,您可能会做错事。
-
请记住,如果您的数据中确实包含数字,您会将它们作为字符串读出,并且 sorted 将执行字典排序(即 '132'
-
@user3468054 我的数据只有第一列有数字,其余的是字符串