I have the following code where I am trying to map columns from the input file to output.
I have written it using multiple loops. Is there a way to write this more efficiently?
input.csv:
Name, Age, Gender, Nation
Joe, 18, Male, British
output.csv:
First_name, Age_Years, Gender_F_M, Religion, Nationality
Joe, 18, Male, , British
code:
import csv
renamed_headers = {
"First_name": "Name",
"Age_Years":"Age",
"Gender_F_M":"Gender",
"Religion": None,
"Nationality": "Nation",
}
with open("input.csv") as input_file, open(r"output.csv", "w", newline="") as output_file:
reader = csv.DictReader(input_file, delimiter=",")
writer = csv.writer(output_file, delimiter=",")
# write headers
header_line = []
for header_name in renamed_headers.keys():
header_line.append(header_name)
writer.writerow(header_line)
# write values
for item in reader:
row_to_write = []
print(item)
for value in renamed_headers.values():
if value:
row_to_write.append(item[value])
else:
row_to_write.append("")
writer.writerow(row_to_write)