Python3打开CSV做逻辑写新csv

时间:2016-11-02 22:02:11

标签: python python-3.x csv

我有一个有几百行的csv文件。

为了简单起见,请使用以下三个标题:

Asignee, ClientName, Lead

Carl Jr, TestCompany, NO
James, TestCompany, NO
Sarah H, TestCompany, NO
Osvaldo W, OtherCorp, Osvaldo W
Walter Green, OtherCorp, No
Ace Ven, PetDick, No
Dan Marino, PetDick, No

所以在新文件的那个场景中,我想要写这个

PetDick, No
TestCompany, No

由于其他人有领导,我不关心这份报告。

文件中的行数可能与PER ClientName的受理人数量相同。 我需要做的是找出哪些ClientNames没有潜在客户。

这是我到目前为止所拥有的:

import csv

def createReport():
    with open('/home/origReport.csv', 'rt') as origfile, open('/home/newReport.csv', 'wt') as out:
     reader = csv.DictReader(origfile)
     writer = csv.writer(out, lineterminator='\n')
     for row in reader:
      if row['Lead'] == 'NO':
       writer.writerow(row["Lead"])

createReport()

在输出方面,这并不是我想要的。

N,O
N,O
N,O

如果我尝试将其放入脚本中。

writer.writerow(row["ClientName","Lead"])

我得到了

Traceback (most recent call last):
 File "test2.py", line 15, in <module>
createReport()
  File "test2.py", line 12, in createReport
 writer.writerow(row["ClientName","Lead"])
KeyError: ('ClientName', 'Lead')

但我也不知道在if语句中添加什么AND。

基本上我想找到Lead是NO的每一行,但也是ClientName不存在于另一行,其中Lead是一个名称(或者基本上是NO)的所有行。如果Lead对于不同ROW上的同一ClientName不是NO,则应在此报告中将其排除。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试

writer.writerow([row["Lead"], row["ClientName"]])

writerow接受一个数组。您获得了第一个输出,因为您的输入row["Lead"]已隐式转换为["N", "O"];