Visualizzazione post con etichetta csv. Mostra tutti i post
Visualizzazione post con etichetta csv. Mostra tutti i post

giovedì 9 dicembre 2010

Problemi di encoding UTF-8 su script Perl

Ho uno script che legge un file CSV, fa alcune elaborazioni e poi genera un nuovo file CSV su standard output.

Problema: se il csv sorgente contiene dei caratteri estesi in encoding utf8 (ad esempio le lettere tedesche che l'umlaut) mi trovavo nell'output degli errori:
Cannot parse:__contenuto_della_riga_del_csv__
Soluzione: dire a Perl che quello che sta leggendo e' un file utf8, trasformando la riga:

 open (CSV, '<:', $file)
in:

 open (CSV, '<:utf8', $file)
Questo ha fatto sparire i warning relativi al parsing del file, pero' l'output risultava errato con i caratteri estesi sostituiti da orrende sequenze e codici.

Il nuovo problema era che l'output veniva encodato in ISO-8859
Per forzare le scritture su standard output in UTF8, bisogna inserire a inizio script la riga:
binmode STDOUT, ":utf8";




venerdì 12 giugno 2009

Convertire un file da xls a csv da linea di comando

Eseguire i comandi seguenti (sostituire [STRINGACASUALE] con quella che troverete nella vostra cartella build):

cpan -i Spreadsheet::ParseExcel
cpan -i Spreadsheet::Text::CSV_XS
cp ~/.cpan/build/Spreadsheet-ParseExcel-0.49-[STRINGACASUALE]/sample/xls2csv.pl /usr/local/bin/
chmod +x /usr/local/bin/xls2csv.pl


Lanciate la conversione con il comando:
xls2csv.pl nomefile.xls [COLONNA1][RIGA1]:[COLONNA2][RIGA2]

es:
xls2csv.pl test.xls A1:G2

Se volete indicare anche il foglio di lavoro da esportare dovete usare la sintassi seguente:

xls2csv.pl nomefile.xls [FOGLIO]-[COLONNA1][RIGA1]:[COLONNA2][RIGA2]


es:
xls2csv.pl test.xls 1-A1:G2


L'output viene visualizzato a video. Se il risultato vi soddisfa potete ovviamente salvarlo su file mediante redirezione dello standard output:

es:
xls2csv.pl test.xls A1:G2 > test.csv

Purtroppo la parte seguente non funziona correttamente....vedremo in seguito quale soluzione adottare:

Se il file xls contiene caratteri accentati o il simbolo dell'Euro, probabilmente riceverete la segnalazione seguente:
Wide character in print at ./xls2csv.pl line 44.

e i caratteri accentati / simboli saranno sostituiti da arcani simboli.

Potete risolvere la cosa aggiungendo la linea
use utf8;

nei pressi delle altre clausole "use" all'interno del file xls2csv.pl

venerdì 28 novembre 2008

Esportare contatti da Evolution (csv)

Normalmente Evolution permette di esportare i contatti solo in formato VCard.

Se volete esportarli in formato CSV potete usare questo comando:
evolution-addressbook-export --format=csv > contatti.csv

Troverete nel file contatti.csv l'export richiesto (se ne avete piu' di uno viene esportato l'address book di default).

giovedì 5 luglio 2007

Regexp: trovare indirizzi email tra parentesi

(.*@.*)


Questa regexp trova le coppie di parentesi che racchiudono un indirizzo email.

P.S.: sinceramente mi ricorda il tie fighter di Dart Vader ;-)

"[^\,]*(.*@.*)"


Questa regexp trova il campo "nome visualizzato posta elettronica" in un file CSV generato da Outlook per esportare i contatti (il campo contiene il nome e l'indirizzo email tra parentesi)