Как преобразовать строку «-2» в float в python?

#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) для преобразования всех элементов ввода произвольного размера.