0
我有一个csv文件,有几百行。Python3打开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语句。
本质上我想找到Lead是否为NO的每一行,而且还有其他行中LeadName是不存在的客户端名称(或基本上任何事物,但不是)。如果Lead对于不同行上的相同ClientName不是NO,那么它应该被排除在本报告中。
在此先感谢您的帮助。
谢谢,这工作得到正确的输出。对逻辑的任何想法....试图找到最简单的方法来做到这一点。但它没有到我这里来。 –
一个简单的方法是迭代文件两次或将文件读入对象,然后迭代两次。在第一次迭代中,构造一个映射来记录是否出现了具有非NO Lead的某个clientName,并在第二次迭代中利用该映射完成您的逻辑。 –
yehe
听起来像是一个很好的解决方案...不知道如何制作地图。现在我在用谷歌搜索 –