Преобразование строк в числа

Преобразование строк в числа: 7 основных способов

В этой статье мы рассмотрим все основные способы преобразования строки в число, с примерами.

1. Функция int()

Функция int() преобразует строку, содержащую целое число, в соответствующее числовое значение. Если строка содержит дробное число, будет вызвано исключение ValueError.

Пример:

str_num = "42"
num = int(str_num)
print(num)
print(type(num))

#42
#<class 'int'>

2. Функция float()

Функция float() преобразует строку, содержащую дробное число, в соответствующее числовое значение. Если строка содержит целое число, оно будет преобразовано в число с плавающей точкой.

Пример:

str_num = "42.5"
num = float(str_num)
print(num)
print(type(num))

#42.5
#<class 'float'>

3. Функция complex()

Функция complex() преобразует строку, содержащую комплексное число, в соответствующее числовое значение.

Пример:

str_num = "3+4j"
num = complex(str_num)
print(num)
print(type(num))

#(3+4j)
#<class 'complex'>

4. Метод ast.literal_eval()

Модуль ast предоставляет метод literal_eval(), который позволяет безопасно преобразовывать строку в литерал (число, список, кортеж и т.д.). Он может быть использован для преобразования строки в число.

Пример:

import ast

str_num = "42.5"
num = ast.literal_eval(str_num)
print(num)
print(type(num))

#42.5
#<class 'float'>

5. Использование функции eval()

Функция eval() позволяет выполнять строку как код Python. Она может быть использована для преобразования строки в число, однако использование eval() считается опасным и не рекомендуется без предварительной проверки и обработки строки.

Пример:

str_num = "42"
num = eval(str_num)
print(num)
print(type(num))

#42
#<class 'int'>

6. Использование регулярных выражений

Для преобразования строки в число можно использовать регулярные выражения, особенно если строка содержит другие символы. Модуль re предоставляет функции и методы для работы с регулярными выражениями.

Пример:

import re

str_num = "Сумма: 42.5$"
pattern = r"[-+]?\d*\.\d+|[-+]?\d+"  # шаблон для поиска чисел (целых и дробных)
match = re.search(pattern, str_num)

if match:
    num = float(match.group())
    print(num)
    print(type(num))
else:
    print("Число не найдено")

#42.5
#<class 'float'>

7. Использование функции locale.atof()

Модуль locale предоставляет функцию atof(), которая преобразует строку, содержащую число, в соответствующее числовое значение. Эта функция учитывает локальные настройки, такие как разделитель десятичных знаков.

Пример:

import locale

# Установка локали
locale.setlocale(locale.LC_ALL, "en_US.UTF-8")

str_num = "42,500.00"
num = locale.atof(str_num)
print(num)
print(type(num))

#42500.0
#<class 'float'>

Заключение

Мы рассмотрели все основные способы преобразования строки в число в Python. Выбор подходящего метода зависит от ваших потребностей и предпочтений. Например, для простого преобразования строки, содержащей целое число, можно использовать функцию int(), а для преобразования строки с дробными числами – функцию float(). Если строка содержит другие символы, регулярные выражения или функция locale.atof() могут быть полезными инструментами для извлечения и преобразования чисел.

Содержание: