|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 763
|
[Python 3, numpy] Errore Could not convert string
Ciao!
Sono nuovo di python e sto provando a fare questa esercitazione: https://github.com/FredericBourgeon/...tatistics-1.py dove il file populations.txt è disponiible qui. In verità mi blocco subito perchè, anche copiando paro paro il codice, quando cerco di caricare il file txt ottengo un messaggio di errore come questo: Codice:
pop = np.loadtxt('populations.txt')
Traceback (most recent call last):
File "<ipython-input-53-fda311d8f35c>", line 1, in <module>
pop = np.loadtxt('populations.txt')
File "C:\Users\David\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 856, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Users\David\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 856, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: b'\xef\xbb\xbf1900'
P.S.:con genfromtxt funziona Ultima modifica di David_jcd : 05-02-2015 alle 19:40. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il problema è che quel file di testo è stato salvato in formato UTF-8 per Windows, per cui riporta il famigerato simbolo BOM (i primi 3 byte sono b'\xef\xbb\xbf' per l'appunto).
Aprilo con un editor che è in grado di eliminare quel simbolo, o comunque consento di rimuoverlo, poi salvalo e riprova.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
f = open('xxx.txt') rd = f.read()[3:] f.close() E in rd hai il file senza i primi 3 bytes
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Python rulez.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 763
|
Grazie, provo e poi vi faccio sapere. Con notepad++ non riesco a rimuoverlo.
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Lui usa una funzione di numpy per leggere il file, quindi per usare il mio sistema devi usare un piccolo trucco. Metti nel codice questa funzione Codice:
def convert(filename):
f = open(filename,'rb')
rd = f.read()
f.close()
if b'\xef\xbb\xbf' in rd:
rd = rd.replace(b'\xef\xbb\xbf',"")
f2 = open('cnv_'+filename,'wb')
f2.write(rd)
return 'cnv_'+filename
np.loadtxt(convert('population.txt')) Dovrebbe funzionare ma fai attenzione perché python usa unicode in modo sconsiderato (uno dei tanti scombinamenti di versione tra 2 e 3, mannaggia a loro...) quindi se non funziona fammi sapere e proviamo a cambiarlo usando struct.unpack e roba simile...
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
Ultima modifica di ingframin : 06-02-2015 alle 14:59. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:18.




















