В этой статье мы рассмотрим все основные способы преобразования строки в число, с примерами.
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()
могут быть полезными инструментами для извлечения и преобразования чисел.