Как конвертировать строку в числовой тип в Python
Преобразование строк в числа в Python
Основной и наиболее эффективный способ преобразовать строку в число в Python - использовать встроенные функции int() и float() в сочетании с блоком try/except для обработки ошибок. Этот метод работает для стандартных строк, содержащих целые и дробные числа, а также числа с указанием знака.
Пример:
s = "-789"
try:
num = int(s)
print(num, type(num))
except ValueError:
print("Строка не содержит целого числа")изменить тип в python (изменить тип в python)
-789 <class 'int'>
Python int to str (преобразование int в строку в python)
Пояснение: int() принимает строку, содержащую только цифры и необязательный знак. Если строка имеет неверный формат (например, содержит буквы или точку), возникает исключение ValueError. Блок try/except позволяет корректно обработать такую ситуацию.
Для дробных чисел:
s = "3.1415"
try:
num = float(s)
print(num, type(num))
except ValueError:
print("Невозможно преобразовать строку в дробное число")Python bytes to string (преобразование байтов в строку в python)
3.1415 <class 'float'>
как выводить в строку python (преобразование вывода в строку в python)
Функция float() понимает десятичную точку, знак, а также научную нотацию (например, "1e-3").
Как преобразовать строку из двоичной, восьмеричной или шестнадцатеричной системы?
Функция int() с параметром base (основание системы счисления) позволяет интерпретировать строку как число в заданной системе. Пример:
bin_str = "101101"
num = int(bin_str, 2)
print(num)
hex_str = "FF"
num_hex = int(hex_str, 16)
print(num_hex)Python list to string (преобразование списка в строку python)
45
255
Python string integer (преобразование строки в целое число python)
Строка не должна содержать префиксов "0b" или "0x" (если они есть, их нужно удалить).
Как безопасно преобразовать строку с арифметическим выражением?
Функция eval() вычисляет строку как Python-выражение и возвращает число. Однако eval() чрезвычайно опасна, если строка получена из ненадёжного источника: она может выполнить произвольный код. Используйте её только для доверенных строк.
expr = "2 + 3 * 4"
result = eval(expr)
print(result)преобразовать тип данных python (преобразование типа данных в python)
14
Python целое в строку (преобразование целого числа в строку)
Для безопасного анализа строк с числами и простыми арифметическими операциями лучше применить ast.literal_eval() из модуля ast. Эта функция понимает только литералы (числа, строки, кортежи и т.д.) и отклоняет любой потенциально опасный код.
import ast
s = "5.25"
try:
num = ast.literal_eval(s)
print(num, type(num))
except ValueError:
print("Неверный литерал")Python string number (строковое представление числа в python)
5.25 <class 'float'>
функция str в python (функция str() в python)
Как преобразовать целый список строк в числа?
Используйте функцию map() или генератор списков:
str_list = ["10", "20", "30"]
int_list = list(map(int, str_list))
print(int_list)
# С дробями
float_list = [float(x) for x in ["1.1", "2.2", "3.3"]]
print(float_list)Python список str в int (преобразование списка строк в список целых чисел в python)
[10, 20, 30]
[1.1, 2.2, 3.3]
Python перевести в число (преобразование в число в python)
При наличии некорректных строк можно добавить проверку через try/except внутри генератора.
Как преобразовать строку "True" / "False" в число (0 или 1)?
В Python логические значения True и False наследуют от int, но прямое преобразование строки не работает. Используйте условный оператор или словарь:
str_bool = "True"
num = 1 if str_bool == "True" else 0
print(num)
# Альтернатива: eval (осторожно)
# num = eval(str_bool) # вернёт True, но это не числодробное число в целое python (преобразование дробного числа в целое в python)
1
Python число в строку (преобразование числа в строку в python)
Как обработать строку с запятой в качестве десятичного разделителя?
Некоторые локали используют запятую вместо точки (например, "3,14"). Необходимо заменить запятую на точку и затем преобразовать:
s = "123,456"
normalized = s.replace(',', '.')
try:
num = float(normalized)
print(num)
except ValueError:
print("Не удалось преобразовать")Python привести к int (преобразование в целое число int в python)
123.456
Python элемент списка в строку (преобразование элемента списка в строку в python)
Типичные ошибки и их решение:
- ValueError – когда строка не соответствует числовому формату (например, содержит буквы, несколько точек, лишние пробелы). Решение: очистить строку от лишних символов (strip, replace) перед преобразованием.
- Пробелы и символы-разделители – строка " 123 " вызовет ошибку. Применяйте метод .strip().
- Строка с символом валюты – "$100". Удалите нецифровые символы с помощью регулярных выражений или replace.
- NaN и Infinity – строки "nan", "inf" не распознаются int(), но float() их принимает как специальные значения. Пример: float("inf") вернет inf.
- Отрицательные числа с нестандартным знаком – "−45" (минус Unicode) не обрабатывается. Замените на обычный дефис.
Пример комплексной обработки:
import re
s = "Цена: $1 234,56"
clean = re.sub(r'[^\d\.\-,]', '', s) # удаляем всё, кроме цифр, точки, минуса и запятой
clean = clean.replace(',', '.').replace(' ', '')
try:
num = float(clean)
print(num)
except ValueError:
print("Ошибка")1234.56
Расширенные примеры преобразования строк в числа
Ниже приведены нестандартные сценарии преобразования строк в числовые типы Python.
1. Преобразование строк с научной нотацией
scientific = ["1e3", "2.5e-2", "-1.23E+4"]
for s in scientific:
print(float(s))1000.0
0.025
-12300.0
Функция float() корректно интерпретирует экспоненциальную запись.
2. Извлечение числа из строки с помощью регулярных выражений
import re
text = "В 2023 году температура была 36.6°C, а давление 760 мм рт. ст."
numbers = re.findall(r'-?\d+(?:\.\d+)?', text)
float_numbers = [float(x) for x in numbers]
print(float_numbers)[2023.0, 36.6, 760.0]
Шаблон находит целые и дробные числа со знаком минус.
3. Преобразование шестнадцатеричной строки с префиксом 0x
hex_with_prefix = "0xFF"
# int() с base=16 допускает префикс 0x
num = int(hex_with_prefix, 16)
print(num)
# Альтернатива: удалить префикс
num2 = int(hex_with_prefix[2:], 16)
print(num2)255
255
4. Преобразование строки с пробелами и символом процента
s = " 95.5% "
cleaned = s.strip().replace('%', '')
num = float(cleaned)
print(num)
# Для целого процента: int(cleaned) 95.5
5. Безопасное преобразование для списка с возможными ошибками
data = ["123", "abc", "45.6", "", "0xFF"]
def safe_convert(s):
try:
# Пробуем int, затем float
return int(s)
except ValueError:
try:
return float(s)
except ValueError:
return None
converted = [safe_convert(x) for x in data]
print(converted)[123, None, 45.6, None, None]
Заметьте, что "0xFF" не преобразовался, так как int() без base=16 не распознаёт шестнадцатеричные строки. Для таких случаев можно добавить проверку.
6. Преобразование строки с бинарным числом и незначащими нулями
bin_str = "00101101"
num = int(bin_str, 2)
print(f"{bin_str} -> {num}")00101101 -> 45
7. Преобразование дробной строки с разделителем тысяч (точка или пробел)
s = "1,234,567.89" # американский формат
clean = s.replace(',', '')
num = float(clean)
print(num)
s_europe = "1 234 567,89"
clean2 = s_europe.replace(' ', '').replace(',', '.')
num2 = float(clean2)
print(num2)1234567.89
1234567.89
8. Использование модуля decimal для точного преобразования
from decimal import Decimal
s = "0.1"
d = Decimal(s)
print(d, type(d))
# Преобразование в float (с потерей точности)
f = float(d)
print(f)0.1 <class 'decimal.Decimal'>
0.1
Decimal подходит для финансовых расчётов, но не является встроенным базовым числовым типом (int/float).
9. Обработка строки с ведущими и замыкающими пробелами, знаками плюс
s = " +42 "
num = int(s.strip())
print(num) # 4242
int() и float() автоматически удаляют незначащие пробелы по краям, но лучше явно вызвать .strip().
10. Преобразование логической строки с чувствительностью к регистру
def str_to_bool_int(s):
low = s.strip().lower()
if low in ("true", "1", "yes"):
return 1
elif low in ("false", "0", "no"):
return 0
else:
raise ValueError(f"Не могу интерпретировать '{s}' как булево число")
print(str_to_bool_int("True"))
print(str_to_bool_int("yes"))1
1