写入CSV时添加了额外的字符

时间:2014-09-12 09:11:44

标签: python parsing csv

我目前正在使用python,读取一个CSV文件,然后将最后一列写入另一个CSV文件。

我的阅读和写作代码是:

with open('source.csv', 'rb') as csvfile:
    rdr = csv.reader(csvfile, delimiter=',', quotechar='|')
    with open('result.csv', 'wb') as result:
        wtr = csv.writer(result, delimiter=',', quotechar='|' )
        for r in rdr:
            wtr.writerow((r[2]))

输入如下:

#SYMBOL_NAME,TIMESTAMP,VALUE
,20140909230500.000000,0.000000
,20140909231000.000000,0.000000
,20140909231500.000000,0.000000
,20140909232000.000000,0.000000
,20140909232500.000000,0.000000

我对时间戳不感兴趣,因为生成它的软件,在这个例子中,符号名称是一个空列。

我希望我的输出是这样的:

VALUE
0.000000
0.000000
0.000000
0.000000
0.000000

但实际上我得到了这个:

V,A,L,U,E
0,.,0,0,0,0,0,0
0,.,0,0,0,0,0,0
0,.,0,0,0,0,0,0
0,.,0,0,0,0,0,0
0,.,0,0,0,0,0,0

现在我很确定这是因为delimiter=','部分的csv.writer。但是,当我尝试设置delimiter=''删除逗号时,我被告知它必须至少有一个字符串。

当我一起删除delimiter参数时,我得到完全相同的输出。

1 个答案:

答案 0 :(得分:5)

writerow()期望列表作为参数。 当你给出一个这样的字符串......

wtr.writerow((r[2]))

...它会将字符串字符解释为列表项,并将它们作为单独的列放入csv中。 这样做

wtr.writerow([r[2]])