【发布时间】:2014-11-06 10:07:09
【问题描述】:
我目前正在使用 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
现在我很确定这是因为 csv.writer 部分中的 delimiter=','。但是,当我尝试设置 delimiter='' 来删除逗号时,我被告知它必须至少是一个字符串。
当我一起删除 delimiter 参数时,我得到完全相同的输出。
【问题讨论】:
-
您的原始代码非常接近。您似乎试图根据代码中的附加括号创建一个元组。如果您刚刚这样做,它会起作用:
wtr.writerow((r[2],))(尽管下面的列表解决方案更好)。请参阅Returning tuple with a single item from a function 了解更多信息。 -
额外的括号来自我在谷歌搜索如何仅在 csv 中写入列时发现的另一个问题。我可能应该研究一下我的案例与该问题中的案例之间的区别,因为他试图删除一列(因此将他想保留的列放在双括号中),而我想保留一个并删除其余的.我认为尼科和你有同样的想法,他的灵魂奏效了。但是感谢您的链接,它很有帮助。