python教程—如何向CSV文件添加新列?-Python实用宝典

python教程—如何向CSV文件添加新列?

我有几个CSV文件是这样的:我想添加一个新的列到所有的CSV文件,使它看起来像这样:

我有几个CSV文件如下:

Input
Name        Code
blackberry  1
wineberry   2
rasberry    1
blueberry   1
mulberry    2

我想添加一个新的列到所有CSV文件,使它看起来像这样:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry

到目前为止,我的脚本是这样的:

    import csv with open(input.csv,'r') as csvinput: with open(output.csv, 'w') as csvoutput: writer = csv.writer(csvoutput) for row in csv.reader(csvinput): writer.writerow(row+['Berry'])

(Python 3.2)

但是在输出中,脚本跳过了每一行,新列中只有Berry:

Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry

回答

这应该会让你知道该怎么做:

    >>> 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)

请注意

  1. writer中的行终止符参数。默认情况下是
    设置为'rn',这就是为什么你有双间距。
  2. 使用列表附加所有行并将其写入
    与作家的一次合作。如果你的文件非常非常大
    可能不是一个好主意(RAM),但对于普通文件,我认为它是
    更快,因为I/O更少。
  3. 正如在这篇文章的评论中所指出的,注意而不是
    将两个语句嵌套在一起,可以在同一行中完成:

    打开('C:/test/test.csv','r')作为csvinput,打开('C:/test/output ')。csv', 'w')作为csvoutput:

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论