Re: [Python] Pandas ed Encoding
2016-02-08 22:37 GMT+01:00 Christian Barra: > Il giorno 8 febbraio 2016 21:04, Andrea D'Amore ha > scritto: >> >> 2016-02-08 19:19 GMT+01:00 Christian Barra : >> >> curl -I 'urlDaDoveScaricoUnFileCSV' >> >> > "Il vino bianco D.O.C. 5 terre � ricavato >> >> Ok ma l'uscita di curl qual è? > > > curl -I 'urlDaDoveScaricoUnFileCSV' > poi sono semplicemente andato a riprendere la stringa di testo che ho > utilizzato come esempio finora. > Dovresti anche dirci gli headers che restituisce il server HTTP, in particolare il Content-Type. > [...] > > Allora...ho fatto un po di test. > > df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1") > s = df_witouht_urlib.loc[1,"DESCRIZIONE"] > print(type(s)) > > > > > s.__repr__() > > > '"Il vino bianco D.O.C. 5 terre è > Il problema potrebbe essere che panda, quando scarica il file tramite HTTP, ignori l'encoding che gli passi ed invece usa quello specificato dal server HTTP, oppure cerca di indovinarlo. Comunque un consiglio: **non** assumere che l'encoding sia latin-1, ma usa cp1252 invece. Vedi questa discussione per un pò di contesto: https://groups.google.com/forum/#!searchin/golang-nuts/iso-8859-1/golang-nuts/VudK_05B62k/RtnrQtAPFgAJ > [...] > > print(type(data)) > > > > Ah, usi Python 3. Stavo assumendo Python 2. Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il giorno 9 febbraio 2016 12:35, Manlio Perilloha scritto: > > > Dovresti anche dirci gli headers che restituisce il server HTTP, in > particolare il Content-Type. > Taac ! HTTP/1.1 200 OK Date: Tue, 09 Feb 2016 11:51:12 GMT Server: Apache X-Powered-By: PHP/5.5.31 Content-Disposition: attachment; filename=data.csv Cache-Control: max-age=0 Expires: Tue, 09 Feb 2016 11:51:12 GMT Content-Type: text/csv; Il problema potrebbe essere che panda, quando scarica il file tramite > HTTP, ignori l'encoding che gli passi ed invece usa quello specificato > dal server HTTP, oppure cerca di indovinarlo. > > Comunque un consiglio: **non** assumere che l'encoding sia latin-1, ma > usa cp1252 invece. > Do una occhiata al codice di pandas, ma presumo che il problema sia quello... Ora prova ad utilizzare cp1252 e vedo se da problemi. -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-09 11:19 GMT+00:00 Pietro Battiston: > Sarei curioso di sapere cosa ti abbia dato questa impressione al volo. > Es. disorganizzazione del flow? Pochi commenti? Troppe funzioni a spasso? > Tutto ciò ed altro? > Mah... un insieme di cose. Intanto non sono mai stato contento dell'API. Tenta di essere smart in molti modi e risulta essere semplicemente complicata da usare. Ovviamente questa tendenza se la portano in giro un po' ovunque... per cui per dire hai signatures veramente inbordellate. Tipo a sboccio i readers hanno una cinquantina di parametri. E per risolvere il problema della code duplication fanno una higher order function (di 50 parametri) che ti ritorna una funzione (di 50 parametri) che fa un minimo di parameter mangling, poi ci costruisce un dizionario gigantesco che passa come argomento alla funzione effettiva "generica" che fa il lavoro. La quale funzione e' lunga tipo 260 righe. Ora... hai due approcci per testare tutto questo. O testi solo le funzioni "pubbliche" (e.g., read_cvs), oppure testi la funzione effettiva _read. Che ha 50 parametri. Ora, nell'ipotesi semplificativa che ciascuno di questi parametri abbia due valori rilevanti, stiamo parlando di 2^50 combinazioni di input. Che e' nell'ordine di grandezza di mille volte l'eta' dell'universo. Ora, non e' detto che tutte le combinazioni percorrano path diversi (ovviamente impossibile, visto che la funzione e' solo 260 righe)... ma allora perche' non raggruppare i parametri in pochi set noti? Se invece testi solo la roba pubblica, rischi di lasciare combinazioni non testate che magari mordono. Mi sembra che qualcuno si sia scordato di provare a modellare sta roba ad oggetti... ecco.Non che sia un gran fan della programmazione ad oggetti... ma anche in Haskell se uno vede gruppi di parametri che vanno insieme si fa una qualche struttura che li rappresenta. -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
* Christian Barra (barrac...@gmail.com) [160208 22:38]: data.__repr__() "Il vino bianco D.O.C. 5 terre \\xe8 ricavato data.decode("latin-1") "Il vino bianco D.O.C. 5 terre è ricavato alla fine della saga ce lo dici che uve ci vanno nella d.o.c. 5 terre, vero ? non ci lasci così, sul più bello ... -- .*.finelli /V\ (/ \) -- ( ) Linux: Friends dont let friends use Piccolosoffice ^^-^^ -- (...) e poi dopo di lei ha parlato Walter Veltroni che ha parlato per 29 minuti e 42 secondi e quello che ha detto, non l’ho mica ascoltato, ma non per cattiveria, per via del fatto che uno che è stato responsabile della propaganda del Partito Comunista Italiano e che dopo, quando il comunismo è fallito e il Partito Comunista Italiano ha cambiato nome ha detto di non esser mai stato comunista, cosa volete ascoltarlo, uno così, cosa volete che possa dire, di sensato? Paolo Nori ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il 08 febbraio 2016 22:37:59 CET, Christian Barraha scritto: >Il giorno 8 febbraio 2016 21:04, Andrea D'Amore >ha >scritto: > >> 2016-02-08 19:19 GMT+01:00 Christian Barra : >> >> curl -I 'urlDaDoveScaricoUnFileCSV' >> >> > "Il vino bianco D.O.C. 5 terre � ricavato >> >> Ok ma l'uscita di curl qual è? > > >curl -I 'urlDaDoveScaricoUnFileCSV' >poi sono semplicemente andato a riprendere la stringa di testo che ho >utilizzato come esempio finora. > >Problemi con la configurazione in locale ? Potrebbe anche esserema >ho >configurato il bash_profile proprio in mattinata > ># Export LANG >export LANG="en_US.UTF-8" >export LC_MONETARY="it_IT.UTF-8" >export LC_NUMERIC="it_IT.UTF-8" >export LC_TIME="it_IT.UTF-8" > >Allora...ho fatto un po di test. > >df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1") >s = df_witouht_urlib.loc[1,"DESCRIZIONE"] >print(type(s)) > > > > >s.__repr__() > > >'"Il vino bianco D.O.C. 5 terre è > > >- > > >response = urllib.request.urlretrieve(URL, "data.csv") >df_with_urlib = pd.read_csv("data.csv", encoding = "latin-1") >s = df_with_urlib.loc[1,"DESCRIZIONE"] >print(type(s)) > > > > > >s.__repr__() > >'"Il vino bianco D.O.C. 5 terre è ricavato > > >- > > >response = urllib.request.urlopen(URL) >data = response.read() > >print(type(data)) > > > > > >data.__repr__() > >"Il vino bianco D.O.C. 5 terre \\xe8 ricavato > > >data.decode("latin-1") > >"Il vino bianco D.O.C. 5 terre è ricavato > Bravissimo a non aver fatto il top quoting, ora un passo in più, tutta la parte seguente alla tua risposta, che non serve più, cancellala, e in ogni caso, cancella firma e disclaimer del post a cui rispondi. Byez -- Gollum1 Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli errori di battitura (maledetto correttore ortografico). ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 18:22 GMT+01:00 Christian Barra: > Cosa potrebbe essere ? curl -I 'urlDaDoveScaricoUnFileCSV' -- Andrea ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
I dati sono diversi o uguali? Aprili con "b". # curl > file-curl.csv # diff data.csv file-curl.csv Pace, R. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 19:51 GMT+01:00 Roberto Polli: > I dati sono diversi o uguali? Aprili con "b". > I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da python b'stringona' ? > > # curl -l > test.csv > # diff data.csv test.csv > diff data.csv test.csv output vuoto. > > Pace, > R. > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Scusate il TP Il 8 febbraio 2016 21:17, Manlio Perilloha scritto: >>> >>> print(repr(s)) __repr__ don't print ;) Pace, R. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il giorno 8 febbraio 2016 21:04, Andrea D'Amoreha scritto: > 2016-02-08 19:19 GMT+01:00 Christian Barra : > >> curl -I 'urlDaDoveScaricoUnFileCSV' > > > "Il vino bianco D.O.C. 5 terre � ricavato > > Ok ma l'uscita di curl qual è? curl -I 'urlDaDoveScaricoUnFileCSV' poi sono semplicemente andato a riprendere la stringa di testo che ho utilizzato come esempio finora. Problemi con la configurazione in locale ? Potrebbe anche esserema ho configurato il bash_profile proprio in mattinata # Export LANG export LANG="en_US.UTF-8" export LC_MONETARY="it_IT.UTF-8" export LC_NUMERIC="it_IT.UTF-8" export LC_TIME="it_IT.UTF-8" Allora...ho fatto un po di test. df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1") s = df_witouht_urlib.loc[1,"DESCRIZIONE"] print(type(s)) s.__repr__() '"Il vino bianco D.O.C. 5 terre è - response = urllib.request.urlretrieve(URL, "data.csv") df_with_urlib = pd.read_csv("data.csv", encoding = "latin-1") s = df_with_urlib.loc[1,"DESCRIZIONE"] print(type(s)) s.__repr__() '"Il vino bianco D.O.C. 5 terre è ricavato - response = urllib.request.urlopen(URL) data = response.read() print(type(data)) data.__repr__() "Il vino bianco D.O.C. 5 terre \\xe8 ricavato data.decode("latin-1") "Il vino bianco D.O.C. 5 terre è ricavato Il giorno 8 febbraio 2016 21:52, Gollum1 ha scritto: > Il 08 febbraio 2016 21:46:37 CET, Roberto Polli ha > scritto: > >Scusate il TP > > > >Il 8 febbraio 2016 21:17, Manlio Perillo ha > >scritto: > >>> print(repr(s)) > >__repr__ don't print ;) > > > >Pace, > >R. > >___ > >Python mailing list > >Python@lists.python.it > >http://lists.python.it/mailman/listinfo/python > > Salvato in corner... > O era coroner? > > :-P > -- > Gollum1 > > Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e > gli errori di battitura (maledetto correttore ortografico). > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
__repr__ don't print Pace, R. Il 8 febbraio 2016 21:17, Manlio Perilloha scritto: > 2016-02-08 20:52 GMT+01:00 Christian Barra : >> >> >> Il giorno 8 febbraio 2016 20:42, Manlio Perillo >> ha scritto: >>> >>> 4. encoding non impostato correttamente su terminale? >>> >>> Christian: prova a fare, da jupiter: >>> >>> >>> s = df_1.loc[1,"DESCRIZIONE"] >>> >>> print(type(s)) >> >> >> >> >>> >>> print(repr(s)) >> > > Strano. Se fai: df_1 = pd.read_csv(URL, encoding="latin-1") > > mi aspetto che ti restituisca stringhe unicode. > print(type(df.loc[1,"DESCRIZIONE"])) > stampa str oppure unicode? > > Se stampa unicode potrebbe essere un bug di panda/urllib, altrimenti > significa che panda fa qualcosa di veramente brutto, ma di brutto > brutto brutto nè (cit). > > Ciao Manlio > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 19:19 GMT+01:00 Christian Barra: >> curl -I 'urlDaDoveScaricoUnFileCSV' > "Il vino bianco D.O.C. 5 terre � ricavato Ok ma l'uscita di curl qual è? > Problema di encoding del file csv (viene generato da uno script php che legge > i dati direttamente dal db) O forse dato che usi py3 (visto urllib.request) lui sta salvando tutto in utf-8 a tua insaputa. O il tuo emulatore di terminale non è ben configurato. O il tuo locale. -- Andrea ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il 08 febbraio 2016 21:46:37 CET, Roberto Polliha scritto: >Scusate il TP > >Il 8 febbraio 2016 21:17, Manlio Perillo ha >scritto: >>> print(repr(s)) >__repr__ don't print ;) > >Pace, >R. >___ >Python mailing list >Python@lists.python.it >http://lists.python.it/mailman/listinfo/python Salvato in corner... O era coroner? :-P -- Gollum1 Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli errori di battitura (maledetto correttore ortografico). ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
> > "Il vino bianco D.O.C. 5 terre � ricavato >> > > Problema di encoding del file csv (viene generato da uno script php che > legge i dati direttamente dal db) > Mi sono dimenticato del ?, era una domanda > -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il giorno 8 febbraio 2016 18:37, Andrea D'Amoreha scritto: > 2016-02-08 18:22 GMT+01:00 Christian Barra : > > Cosa potrebbe essere ? > > curl -I 'urlDaDoveScaricoUnFileCSV' > "Il vino bianco D.O.C. 5 terre � ricavato Problema di encoding del file csv (viene generato da uno script php che legge i dati direttamente dal db) -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 18:58 GMT+00:00 Christian Barra: > I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da > python b'stringona' ? > >> A me verrebbe da dire che se df_1 = pd.read_csv(URL, encoding="latin-1") fallisce (ovvero non fa quello che vuoi) vuole dire che: 1. c'e' un baco in pandas 2. c'e' un baco in urllib2 (usi Python 2?) 3. il file che ti arriva effettivamente non e' in latin-1 Senza fare analisi binaria di quello che ti arriva, e' complicato risolvere. BTW, il codice critico e' qui: https://github.com/pydata/pandas/blob/master/pandas/io/common.py e la roba inizia qui: https://github.com/pydata/pandas/blob/master/pandas/io/parsers.py#L244 Non mi ero accorto mai di quanto facesse cacare il codice di Pandas, per inciso. -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
Il giorno 8 febbraio 2016 20:42, Manlio Perilloha scritto: > > 4. encoding non impostato correttamente su terminale? > > Christian: prova a fare, da jupiter: > > >>> s = df_1.loc[1,"DESCRIZIONE"] > >>> print(type(s)) > >>> print(repr(s)) > "Il vino bianco D.O.C. 5 terre è ricavato. > > > [...] > > Ciao Manlio > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > -- I wish you a good day, Christian ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 20:36 GMT+01:00 enrico franchi: > > 2016-02-08 18:58 GMT+00:00 Christian Barra : >> >> I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da >> python b'stringona' ? > > > A me verrebbe da dire che se df_1 = pd.read_csv(URL, encoding="latin-1") > fallisce (ovvero non fa quello che vuoi) vuole dire che: > 1. c'e' un baco in pandas > 2. c'e' un baco in urllib2 (usi Python 2?) > 3. il file che ti arriva effettivamente non e' in latin-1 > 4. encoding non impostato correttamente su terminale? Christian: prova a fare, da jupiter: >>> s = df_1.loc[1,"DESCRIZIONE"] >>> print(type(s)) >>> print(repr(s)) > [...] Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pandas ed Encoding
2016-02-08 20:52 GMT+01:00 Christian Barra: > > > Il giorno 8 febbraio 2016 20:42, Manlio Perillo > ha scritto: >> >> 4. encoding non impostato correttamente su terminale? >> >> Christian: prova a fare, da jupiter: >> >> >>> s = df_1.loc[1,"DESCRIZIONE"] >> >>> print(type(s)) > > > > >> >>> print(repr(s)) > Strano. Se fai: >>> df_1 = pd.read_csv(URL, encoding="latin-1") mi aspetto che ti restituisca stringhe unicode. >>> print(type(df.loc[1,"DESCRIZIONE"])) stampa str oppure unicode? Se stampa unicode potrebbe essere un bug di panda/urllib, altrimenti significa che panda fa qualcosa di veramente brutto, ma di brutto brutto brutto nè (cit). Ciao Manlio ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python