Reemplazar espacios con NULL en archivo CSV

Esta es la continuación de la siguiente publicación.

Reemplazando espacios con valores NULL al comparar dos archivos CSV usando python

Puedo agregar columnas perdidas en el nuevo archivo CSV csvfile3 y reemplazar los espacios con valores NULL.

Este es un nuevo requisito para mi cubo.

Pero si csvfile1 no contiene el orden de las columnas según el orden de los encabezados en csvfile2 , puedo ver el orden correcto de las columnas en csvfile3 , pero las columnas que no están en el lugar correcto en csvfile1 se llenan con valores NULOS en la salida archivo csvfile3 .

Este no es el resultado esperado. Los valores de esas columnas, que no están en el lugar correcto en csvfile1 , también deben copiarse en csvfile3 junto con el encabezado.

El código está presente en el enlace anterior.

digamos que esta es mi otra versión del archivo csv csvfile1 para esta publicación:

name,City,Dept sree,Bengaluru,CSE, vatsasa,Hyd,ECE, ,VJA,IT, capini,Mech,, DTP,,Civil, Bengaluru,TVM,ECM, sre,MNGL,ECS, vatsas,Kochi, ,TVM,Nano, capmin,Tech,, DTP9,Kochi,CSS, ,TVM,ESS, sree0,MNGL,RSS, 

csvfile2 sería igual que el archivo en el enlace anterior.

El siguiente es el resultado esperado:

 name Dept City Address sree, CSE, Bengaluru,NULL vatsasa, ECE, Hyd, NULL NULL, IT, VJA, NULL capini, NULL, Mech, NULL DTP, Civil,NULL, NULL Bengaluru,ECM, TVM, NULL sre, ECS, MNGL, NULL vatsas, NULL, Kochi, NULL NULL, Nano, TVM, NULL capmin, NULL, Tech, NULL DTP9, CSS, Kochi, NULL NULL, ESS, TVM, NULL sree0, RSS, MNGL, NULL 

Salida del código en el enlace:

 name Dept City Address sree, CSE, NULL, NULL vatsasa, ECE, NULL, NULL NULL, IT, NULL, NULL capini, NULL, NULL, NULL DTP, Civil,NULL, NULL Bengaluru,ECM, NULL, NULL sre, ECS, NULL, NULL vatsas, NULL, NULL, NULL NULL, Nano, NULL, NULL capmin, NULL, NULL, NULL DTP9, CSS, NULL, NULL NULL, ESS, NULL, NULL sree0, RSS, NULL, NULL 

Este es el código:

 import csv with open("csvfile1.csv") as csv_1,\ open("csvfile2.csv") as csv_2,\ open("csvfile3.csv", "w") as csv_3: reader_1 = csv.reader(csv_1) reader_2 = csv.reader(csv_2) writer = csv.writer(csv_3) headers_1 = next(reader_1) headers_2 = next(reader_2) insert_null_at = [] for i, header in enumerate(headers_2): if header not in headers_1: insert_null_at.append(i) writer.writerow(headers_2) for row in reader_1: for i in insert_null_at: row.insert(i, "") writer.writerow([item if item != "" else "NULL" for item in row])