#python
#python
Вопрос:
>>> a=("-2","-2")
>>> float(a[0][0])
Это выдает ошибку
ValueError: invalid literal for float(): -
Итак, как мне ее преобразовать?
Комментарии:
1. Чтобы самостоятельно отладить вашу проблему, первое, что нужно попробовать, было бы
>>> print(a[0][0])
. Это должно дать вам довольно хороший ключ к пониманию того, что произошло.
Ответ №1:
Используйте a[0]
вместо ( a[0][0]
является первым символом первого элемента, а не первым элементом).
Ответ №2:
Извините, но в вашем коде ошибка:
float(a[0])
подойдет.
Если вам нужен результат 2.2, то
x = 0.0; # python 2.x
for i in range(0, len(a)):
x = a[i] * 10**-i
Комментарии:
1. Это двумерный массив. Таким образом, в наборе данных отрицательных чисел, хранящихся в виде строк, как мне преобразовать их в float
2. Em.. какой блок кода возвращает ошибку? Я на 100% уверен, что это
x = float(('2','2')[0])
работает.3. Вы видите, a = (‘-2’, ‘-2’) в Python обрабатывается как одномерный массив (фактически кортеж). Чтобы получить другое измерение, вы должны добавить его явно: ` a = ( (‘-2’, ‘-2’), ) # обратите внимание на последнюю запятую
. Now you can do
float(a[0][0])`.4. Смотрите, в моем наборе данных есть строки, которые определены следующим образом («-2″,»-2″) . Таким образом, здесь отрицательный знак при преобразовании в float выдает ошибку. Как в том случае, когда я делаю float.(a[0][0]) (Это первый элемент двумерного массива, который выдает ошибку
5. @mekasperasky: Ваши комментарии не имеют смысла. Пожалуйста, обновите вопрос вашими реальными данными и реальным кодом, который действительно считывает эти данные.
Ответ №3:
Это одномерный массив, а не многомерный массив. Итак, вы должны указать это следующим образом:
float(a[0])
float(a[1])
Можно указать, что a[0] — это номер первого места ‘-2’, а a[1] — номер второго места ‘-2’. Попробуйте.. Я надеюсь, что это должно быть полезно для вас.
Ответ №4:
Вы неправильно индексируете, если вам нужен кортеж, содержащий значения с плавающей запятой для этих двух строк, тогда вам нужно сделать следующее:
(float(a[0]), float(a[1]))
Обратите внимание, что внешние скобки определяют новый кортеж.
Комментарии:
1. Или используйте
map(float, a)
для преобразования всех элементов ввода произвольного размера.