В этой статье мы рассмотрим все основные способы преобразования строки в число, с примерами.
Функция int()
преобразует строку, содержащую целое число, в соответствующее числовое значение. Если строка содержит дробное число, будет вызвано исключение ValueError
.
Пример:
str_num = "42"
num = int(str_num)
print(num)
print(type(num))
#42
#<class 'int'>
Функция float()
преобразует строку, содержащую дробное число, в соответствующее числовое значение. Если строка содержит целое число, оно будет преобразовано в число с плавающей точкой.
Пример:
str_num = "42.5"
num = float(str_num)
print(num)
print(type(num))
#42.5
#<class 'float'>
Функция complex()
преобразует строку, содержащую комплексное число, в соответствующее числовое значение.
Пример:
str_num = "3+4j"
num = complex(str_num)
print(num)
print(type(num))
#(3+4j)
#<class 'complex'>
Модуль ast
предоставляет метод literal_eval()
, который позволяет безопасно преобразовывать строку в литерал (число, список, кортеж и т.д.). Он может быть использован для преобразования строки в число.
Пример:
import ast
str_num = "42.5"
num = ast.literal_eval(str_num)
print(num)
print(type(num))
#42.5
#<class 'float'>
Функция eval()
позволяет выполнять строку как код Python. Она может быть использована для преобразования строки в число, однако использование eval()
считается опасным и не рекомендуется без предварительной проверки и обработки строки.
Пример:
str_num = "42"
num = eval(str_num)
print(num)
print(type(num))
#42
#<class 'int'>
Для преобразования строки в число можно использовать регулярные выражения, особенно если строка содержит другие символы. Модуль 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'>
Модуль 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()
могут быть полезными инструментами для извлечения и преобразования чисел.
Содержание: