[英]Python3 open CSV do logic write new 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的受让人数一样多。 我需要做的是找出哪些ClientName没有领导。
这是我到目前为止的内容:
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的每一行,但也要找到Lead为Name的另一行中不存在ClientName的行(或本质上却为NO的任何行)。 如果Lead在另一个ROW上对于相同的ClientName不是NO,则应在此报告中将其排除。
在此先感谢您的帮助。
尝试
writer.writerow([row["Lead"], row["ClientName"]])
writerow
接受一个数组。 因为输入row["Lead"]
被隐式转换为["N", "O"]
,所以您获得了第一个输出;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.