Se c’è una cosa che odio profondamente, è l’avere a che fare con file CSV che – per comportamento predefinito – vengono generati da qualsivoglia applicazione con il classico delimitatore all’americana: la virgola.
Sì, lo so, c’è modo di modificare il sistema per utilizzare il punto e virgola, e decine di altri metodi “ammiocuggino” ampiamente testati e venduti come panacea di tutti i mali. Io ho preferito qualche riga di codice che ho chiesto (e poi validato) a Claude.
Modificare il delimitatore CSV: da , a ;
Da virgola a punto e virgola, uno script in Python. Accetta da riga di comando due parametri: posizione e nome del file di input, posizione (facoltativa, usa quella da cui stai lanciando lo script se non la specificherai) e nome del file del file che andrà a creare con il delimitatore desiderato, che poi è impostato a livello di script e sarà il punto e virgola. Questo ti permetterà di evitare di incorrere nel più classico degli errori: aprire il CSV originale in Excel, separare i dati in colonna basandoti sulla virgola e ottenere il messaggio di Warning che ti dice che ci sono già colonne popolate e che stai per andarle a sovrascrivere con altri dati.
Il codice è pubblicamente disponibile su Gist:
import csv | |
import sys | |
if len(sys.argv) != 3: | |
print("Utilizzo: python script.py input_file.csv output_file.csv") | |
sys.exit(1) | |
input_file = sys.argv[1] | |
output_file = sys.argv[2] | |
# Leggi il file CSV con separatori virgola | |
with open(input_file, 'r') as file: | |
reader = csv.reader(file) | |
data = list(reader) | |
# Scrivi il nuovo file CSV con separatori punto e virgola | |
with open(output_file, 'w', newline='') as file: | |
writer = csv.writer(file, delimiter=';') | |
writer.writerows(data) | |
print(f"Conversione completata. File di output: {output_file}") |
Tu potrai scaricarlo facendo clic qui, eseguirlo sulla tua macchina e goderti il risultato.
Lancialo da terminale (ammesso tu abbia Python installato sul tuo PC) specificando quanto ti spiegavo poco sopra, un esempio pratico:
python3 C:\temp\file_csv_originale.csv C:\temp\file_csv_modificato.csv
Inutile forse dirlo: se non ti piace che lo script inserisca come delimitatore il punto e virgola, ti basterà modificare la riga 18 (questa: gist.github.com/gioxx/01b0bb9b5d27c8c227486182193df00b#file-csv_delimiter-py-L18) scegliendo un diverso delimitatore al posto di quello da me dichiarato (delimiter=';'
).
L’area commenti è a tua disposizione per ogni dubbio in merito a questo articolo e allora script :-)
#KeepItSimple