コード(以下に再現)は、ファイルを読み込み、処理を実行し、元のファイルのサブセットを新しいファイルに出力します。少し調整して、代わりに、初期ファイルから出力ファイルまですべてを出力しますが、値が「1」の「フラグ」列を追加します。この行は、現在出力される行です(私たちが最も興味を持っている行のサブセット)?他の行(現在は入力ファイルのみにある行)には、新しい「フラグ」列に空白または「0」があります。
この問題は私にとって十分頻繁に発生するので、これを行う一般的な方法を用意するだけで何時間も節約できます。
助けていただければ幸いです。
import csv
inname = "aliases.csv"
outname = "output.csv"
def first_word(value):
return value.split(" ", 1)[0]
with open(inname, "r", encoding = "utf-8") as infile:
with open(outname, "w", encoding = "utf-8") as outfile:
in_csv = csv.reader(infile)
out_csv = csv.writer(outfile)
column_names = next(in_csv)
out_csv.writerow(column_names)
id_index = column_names.index("id")
name_index = column_names.index("name")
try:
row_1 = next(in_csv)
written_row = False
for row_2 in in_csv:
if first_word(row_1[name_index]) == first_word(row_2[name_index]) and row_1[id_index] != row_2[id_index]:
if not written_row:
out_csv.writerow(row_1)
out_csv.writerow(row_2)
written_row = True
else:
written_row = False
row_1 = row_2
except StopIteration:
# No data rows!
pass