Во время работы над проектом Python мне нужно было выполнить некоторые расчеты с температурой. Значение было сохранено в строке, поэтому я попытался преобразовать его в значение с плавающей запятой, но получил такую ошибку: «ValueError: не удалось преобразовать строку в число с плавающей запятой».

Здесь мы увидим, как исправить эту ошибку, преобразовав строку в число с плавающей запятой в Python.

Позвольте мне сначала объяснить сценарий. Предположим, мне нужно преобразовать эту строку в число с плавающей запятой:

temperature = "36.2 C"

Когда я попытался выполнить преобразование напрямую с помощью метода float(), он выдал такую ошибку:

Traceback(most recent call last):
  File "c:\Users\Asus\OneDrive\Desktop\Articles\Core_Python\Python split regex\try.py", line 3, in 
    print(float(temperature))
          ^^^^^^^^^^^^^^^^^^
ValueError: could not convert string to float: '36.2 C'

Давайте посмотрим, как мы можем исправить эту ошибку.

Содержание

С помощью метода replace()

Невозможно преобразовать строку в число с плавающей запятой, если она содержит какие-либо буквенные или специальные символы. Строка должна содержать только числа типа «34,32», поэтому вы можете преобразовать строку в число с плавающей запятой без каких-либо ошибок в значении.

Итак, мы будем использовать функцию replace(), встроенный метод Python, который заменяет шаблон из строки, а также использовать этот метод для удаления буквенных или специальных символов из строки.

Затем мы можем преобразовать строку в число с плавающей запятой, используя метод Python float().

Давайте разберем оба примера, в которых мы получаем ошибку, а также приведем пример решения с использованием метода replace().

price_string = "$5.0" 

print(float(price_string))
price_string = "$5.0"
price_string = price_string.replace("$", "")
price_float = float(price_string)
print(price_float)

С помощью метода replace() 

В первом коде у нас есть переменная Price_string, которой присвоено $5,0. Затем мы попытались преобразовать его в число с плавающей запятой напрямую, используя float (price_string), но получили ValueError, поскольку не удалось преобразовать строку в любой другой символ, кроме целого числа.

В решении мы используем метод replace() для замены знака «$» пустой строкой, поэтому теперь остается только числовая часть. Если строка содержит только числовую часть, ее можно преобразовать в число с плавающей запятой в Python с помощью метода float().

С использованием блока Try и Except

Мы также можем использовать блок Try и Except для обработки ValueError в Python. Рассмотрим несколько различных сценариев, в которых мы будем использовать цикл for, и вы также узнаете, как преобразовать несколько строковых значений в числа с плавающей запятой в Python.

Давайте посмотрим, как мы можем использовать блок try и кроме для обработки ValueError в Python.

temperatures = ["Celsius", "36.5","Fahrenheit", "78.56"]

temperatures_values = []

for i in temperatures:
    temperatures_values += [float(i)]

print(temperatures_values)
temperatures = ["Celsius", "36.5","Fahrenheit", "78.56"]
temperatures_values = []
for i in temperatures:
    try: 
            temperatures_values += [float(i)]
    except ValueError:
       pass
print(temperatures_values)

С использованием блока Try и Except 

В первом коде у нас есть список, содержащий строки, некоторые элементы содержат алфавиты, а некоторые содержат значения с плавающей запятой в виде строки. Итак, нам нужно преобразовать все строки, содержащие только числа, в числа с плавающей запятой в Python.

Во время итерации, когда «i» было «Цельсий», выдавалось ValueError, поэтому мы использовали блок try-Exception для обработки этой ValueError, за исключением ValueError. Если произойдет ValueError, эта ошибка будет проигнорирована, и итерация не прервется.

Используйте срезы и условные операторы

В Python мы также можем использовать условные операторы и нарезку строк, то есть процесс извлечения необходимой части строки.

Давайте посмотрим, как можно исправить ValueError с помощью цикла for, условных операторов и разрезания строк.

price_list = ["34.0$","35.4$","42.5$","65.7$"]

print(type(price_list[0]))

print("Trying to convert prices to float")

print(float(price_list[0]))
price_list = ["34.0$","35.4$","42.5$","65.7$"]
print(type(price_list[0]))
values = []

for i in price_list:
    if type(float(i[0:-2])) == float:
        values.append(float(i[0:-2]))
print(values)

print(type(values[0]))

Используйте срезы и условные операторы

В приведенном выше коде у нас есть список цен. Из-за символа «$» мы получаем ValueError при преобразовании строки в число с плавающей запятой.

Итак, мы использовали условие if следующим образом: if type(float(i[0:-2])), поэтому этот оператор проверит, можно ли преобразовать индекс позиции от 0 до индекса -2 в число с плавающей запятой или нет. Если True, то эта часть элемента будет добавлена в список значений и преобразована в float() следующим образом:
значения.append(float(i[0:-2])).

Добавить комментарий