У меня есть скрипт, который считывает данные температуры:питон ValueError: неверный буквальное для поплавка()
def get_temp(socket, channels):
data = {}
for ch in channels:
socket.sendall('KRDG? %s\n' % ch)
time.sleep(0.2)
temp = socket.recv(32).rstrip('\r\n')
data[ch] = float(temp)
Иногда сценарий терпит неудачу на линии, которая преобразует значения плавать:
File "./projector.py", line 129, in get_temp
data[ch] = float(temp)
ValueError: invalid literal for float(): +135.057E+0
+078.260E+0
+00029
, но это НЕ является недействительным литералом. Если я введу это в любую оболочку python,
float(+135.057E+0)
затем он корректно возвращает 135.057.
В чем проблема?
литералов являются строки, так что вы на самом деле делаете 'поплавок ('+ 135.057E + 0') ', а не' float (+ 135.057E + 0) ', что, конечно, работает, так как оно уже является float. но это преобразование из строки тоже работает. –
Возможно ли, что в нем есть какой-то невидимый паразитный персонаж? – BrenBarn
Вы можете использовать 'print (repr (temp))' для проверки непечатаемых символов. –