Как конвертировать строку в числовой тип в 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) # 42
42

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

Преобразование в число в Python - comments

En
Python перевести в число (python)