3 回答
TA贡献1794条经验 获得超7个赞
这应该让你知道该怎么做:
>>> v = open('C:/test/test.csv')
>>> r = csv.reader(v)
>>> row0 = r.next()
>>> row0.append('berry')
>>> print row0
['Name', 'Code', 'berry']
>>> for item in r:
... item.append(item[0])
... print item
...
['blackberry', '1', 'blackberry']
['wineberry', '2', 'wineberry']
['rasberry', '1', 'rasberry']
['blueberry', '1', 'blueberry']
['mulberry', '2', 'mulberry']
>>>
编辑,注意py3k你必须使用 next(r)
谢谢你接受了答案。在这里你有一个奖金(你的工作脚本):
import csv
with open('C:/test/test.csv','r') as csvinput:
with open('C:/test/output.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
row = next(reader)
row.append('Berry')
all.append(row)
for row in reader:
row.append(row[0])
all.append(row)
writer.writerows(all)
请注意
中的lineterminator参数csv.writer。默认设置为'\r\n',这就是你有双倍间距的原因。
使用列表附加所有行并用一次性写入它们writerows。如果您的文件非常非常大,这可能不是一个好主意(RAM),但对于普通文件,我认为它更快,因为I / O较少。
如本文的评论中所示,请注意with,您可以在同一行中执行此操作,而不是嵌套这两个语句:
open('C:/test/test.csv','r')为csvinput,open('C:/test/output.csv','w')为csvoutput:
TA贡献1826条经验 获得超6个赞
import csvwith open('input.csv','r') as csvinput: with open('output.csv', 'w') as csvoutput: writer = csv.writer(csvoutput) for row in csv.reader(csvinput): if row[0] == "Name": writer.writerow(row+["Berry"]) else: writer.writerow(row+[row[0]])
也许这样的东西是你想要的?
此外,csv代表逗号分隔值。所以,你需要用逗号分隔你的价值观,我认为:
Name,Codeblackberry,1wineberry,2rasberry,1blueberry,1mulberry,2
添加回答
举报