2013-07-09 11 views
12

Mam skrypt, który analizuje dane z pliku csv. Poniższy wiersz daje mi problemy:Python: nieprawidłowy literał dla int() z base 10: '808.666666666667'

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

Daje mi następujący błąd:

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

Linia pliku csv jest następująca:

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

Próbowałem uruchomiony int(808.666666666667) w wierszu python i działa poprawnie.

+11

Uruchom 'int ('808.666666666667')', a zobaczysz problem. –

+0

Czy możesz nam powiedzieć, co to jest 'my_csv [wiersz] [5]'? –

Odpowiedz

28

Z pomocy na 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.

Więc '808.666666666667' jest nieważny dosłowny dla int dla każdego base, zastosowanie:

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

int(808.666666666667) działa dobrze, ponieważ jesteś przechodzącą pływaka do niego nie literał łańcuchowy.

+0

Dzięki. Wyjście my_csv [wiersz] [5] było zawsze ciągiem reprezentującym liczbę całkowitą do dzisiaj. Widzę, że to było dozwolone, ale nie ciąg znaków/liczba dziesiętna. – imagineerThat

Powiązane problemy