簡體   English   中英

Python3打開CSV做邏輯寫新的CSV

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM