私は数百行のCSVファイルを持っています。Python3オープンCSVは論理書き込み新しいCSV
それをシンプルに保つために、これら三つのヘッダと一緒に行くことができます:私はこれが
PetDick, No
TestCompany, No
を書くことにし、他の人が持っているので、欲しい新しいファイルにそのシナリオにそう
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
私はこの報告書には気にしない。
ファイルには、PERクライアント名と同じ数の行を割り当てることができます。 私がする必要があるのは、どのClientNamesにLeadがないかを知ることです。
は、ここで私がこれまで持っているものです:私は、出力の面で欲しいものを私に与えていない
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の各行を見つけたいだけですが、Leadが名前である別の行にClientNameが存在しない(または本質的には何もありませんが)必要があります。異なる行の同じClientNameに対してLeadがNOでない場合、このレポートではLeadを除外する必要があります。
ありがとうございました。
ありがとう、これは適切な出力を得るために働いた。ロジックに関するアイディア。これを行う最も簡単な方法を見つけようとする。しかし、それは私に来ていない。 –
簡単な方法は、ファイルを2回反復するか、またはファイルをオブジェクトに読み込んだ後、2回反復することです。最初の反復で、特定のclientNameが非NOリードの場合に記録するマップを作成し、2回目の反復でマップを使用してロジックを完成させます。 –
yehe
良い解決策のように聞こえる...地図を作る方法がわからない。今すぐグーグルで行っています –