Python 3 - 如何在同一文件csv中编写特定行?

时间:2016-08-29 05:49:05

标签: python python-3.x csv

我想更新名为" done"的字段名称在同一个文件csv

这是文件csv的结构:

输入:

Email            Done
 1@gmail.com       
 2@gmail.com       
 3@gmail.com
 4@gmail.com

输出:

Email            Done
 1@gmail.com       1
 2@gmail.com       1
 3@gmail.com       1
 4@gmail.com       1

我想要的样子:

import csv
with open(r'E:\test.csv','r', encoding='utf-8') as f:
    reader = csv.DictReader(f,delimiter='|')

    for row in reader:
      #do something here#
      #then write "1" to filename "done"
f.close()

怎么做?非常感谢你 ! :)

1 个答案:

答案 0 :(得分:3)

通过这样的简单更改,您可以使用一对简单的读写文件;读一行,然后立即将其写回来。

In [6]: with open('test.csv','r') as input:
   ...:    with open('test1.csv','w') as output:
   ...:        header=input.readline()
   ...:        output.write(header)
   ...:        for line in input:
   ...:            output.write('%s %8d\n'%(line.strip(),1))

In [7]: cat test1.csv
Email            Done
1@gmail.com        1
2@gmail.com        1
3@gmail.com        1
4@gmail.com        1

你也可以使用csv阅读器和csv编写器; numpy用户可能会尝试使用loadtxtsavetxt对,但在数组中混合字符串和数字值需要更多的专业知识。

在一个足够新的Python中,你可以将两个打开放在一个上下文中:

with open('test.csv','r') as input, open('test1.csv','w') as output:
    ...