2013-07-09 14 views
12

Ho uno script che analizza i dati da un file csv. La riga seguente mi sta dando problemi:Python: letterale non valido per int() con base 10: '808.666666666667'

countData.append([timeStamp,int(my_csv[row][5])]) 

Mi dà il seguente errore:

ValueError: invalid literal for int() with base 10: '808.666666666667' 

La riga del file CSV è il seguente:

2013-06-12 15:09:00,svcName,0,0,10,808.666666666667 

ho provato a fare funzionare int(808.666666666667) in un prompt di python e funziona perfettamente.

+11

Esegui 'int ('808.666666666667')' e vedrai il problema. –

+0

Puoi dirci cosa è 'my_csv [row] [5]'? –

risposta

28

Da aiuto su int:

int(x, base=10) -> int or long

If x is not a number or if base is given, then x must be a string or Unicode object representing an integer literal in the given base.

Quindi, '808.666666666667' è un letterale non valido per int per qualsiasi base, uso:

>>> int(float('808.666666666667')) 
808 

int(808.666666666667) corre bene perché si sta passando un galleggiante ad esso , non una stringa letterale.

+0

Grazie. L'output di my_csv [row] [5] è sempre stato una stringa che rappresenta un numero intero fino ad oggi. Vedo che era permesso, ma non una stringa flottante/decimale. – imagineerThat

Problemi correlati