Wszystkim:ValueError: nieprawidłowy dosłowny dla pływaka() w Pythonie
mam ciekawy, czy ktoś może mi pomóc zrozumieć ten błąd: ValueError: nieprawidłowy dosłowny dla pływaka(). Otrzymuję to, gdy przekazuję plik tekstowy do listy, a następnie próbuję przekonwertować tę listę na wartości zmiennoprzecinkowe.
a = open("input.txt","r")
lines = a.readlines()
b = map(float, lines)
Co jest dziwne, przynajmniej dla mnie jest to, że kiedy proces:
print repr(lines[0])
uzyskać:
„0.000 \ t0.000 ... \ t0.000 \ t0 0,000 \ n”
i
print type(lines[0])
uzyskać:
<type 'str'>
Nie rozumiem, dlaczego mapa (pływak, linie) nie działa poprawnie. Czy używam tej funkcji nieprawidłowo? Patrząc na dokumentację funkcja mapy jest podana jako: map (funkcja, iterowalna, ...). Czy lista nie jest do sprawdzenia?
Również, jeśli ktoś mógłby wyjaśnić ten błąd/wskazać mi kierunek wytłumaczenia tego błędu, byłbym bardzo wdzięczny.
Z góry dziękujemy za pomoc w odpowiedzi na to pytanie.
mówisz, że '0.000 \ t0.000 ... \ t0 .000 \ n' to wszystko jedna linia? Jeśli tak, to zakładam, że to jest przekazywane do 'float()' i nie można go przekonwertować. Wygląda na to, że musisz podzielić go na poszczególne wartości zmiennoprzecinkowe. Czy tak jest? – eldarerathis
@eldarerathis Tak, to wszystko jest jedną linią, ale kiedy ją przetworzę, wydaje się, że przechodzi przez pewną liczbę wartości, to daje mi błąd: b = map (float, lines) ValueError: invalid literal for float(): 0.000 \t 0,000 \t \t 0.000 0.000 0.000 \t \t \t 0.000 0.000 0.000 \t \t \t 0.000 0.000 0.000 \t \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0.000 \t 0. Czy nie jest właściwie przechodząc przez wartości? – geop
Wygląda to tylko na jeden napis, który zanotowałeś powyżej, ale z tym, że '\ t 'jest wyświetlane jako biała spacja (to jest rzeczywisty znak tabulatora). To wszystko jeden literał smyczkowy, a nie garść krótszych, zgaduję. – eldarerathis