Преобразование строковых данных в целые числа на Python

Раздел: Основы Python -> Преобразование типов

Преобразование строки в целое число - одна из базовых операций в Python. Чаще всего для этого используется встроенная функция int(). Однако есть нюансы, которые нужно учитывать.

Основные способы преобразования

Основной способ преобразования строки в целое число в Python - вызов функции int() с передачей строки в качестве аргумента. Функция автоматически обрабатывает ведущие и замыкающие пробелы, а также знаки плюс и минус. Пример:

int('123')

изменить тип в python (изменить тип в python)

123

Python int to str (преобразование int в строку в python)

int('  -42  ')

Python bytes to string (преобразование байтов в строку в python)

-42

как выводить в строку python (преобразование вывода в строку в python)

Важно: строка должна содержать только цифры, необязательные пробелы в начале/конце и необязательный знак. Любые другие символы (буквы, точки, запятые) приводят к ошибке ValueError. Пустая строка также вызывает ошибку.

Как преобразовать строку, представляющую число в двоичной, восьмеричной или шестнадцатеричной системе?

Второй аргумент int() задаёт основание системы счисления (от 2 до 36). Примеры:

int('1010', 2)

Python list to string (преобразование списка в строку python)

10

Python string integer (преобразование строки в целое число python)

int('0xFF', 16)

преобразовать тип данных python (преобразование типа данных в python)

255

Python целое в строку (преобразование целого числа в строку)

Для шестнадцатеричных чисел можно опустить префикс 0x, если указано основание 16. При base=0 функция определяет систему по префиксу: 0b - двоичная, 0o - восьмеричная, 0x - шестнадцатеричная, иначе десятичная.

Ошибки: Если в строке встречается символ, недопустимый для данной системы (например, '2' в двоичной), возникает ValueError.

Как безопасно преобразовать строку, избежав прерывания программы при ошибке?

Оборачивание вызова int() в блок try и except ValueError позволяет обработать некорректный ввод. Пример:

s = 'abc'
try:
    num = int(s)
except ValueError:
    print('Невозможно преобразовать строку в число')

Python string number (строковое представление числа в python)

Невозможно преобразовать строку в число

функция str в python (функция str() в python)

Такой подход применяется при работе с пользовательским вводом, чтении файлов или парсинге данных, где заранее неизвестна корректность строк.

Распространённая ошибка: Использование isdigit() для проверки не учитывает знак минус и пробелы, поэтому может отклонить корректные строки, например '-7'. Рекомендуется полагаться на try/except как на более надёжный способ.

Как преобразовать строку с дробной частью, например '3.14'?

Прямая передача такой строки в int() вызовет ValueError. Необходимо сначала преобразовать её в число с плавающей точкой, затем отбросить дробную часть:

int(float('3.14'))

Python список str в int (преобразование списка строк в список целых чисел в python)

3

Python перевести в число (преобразование в число в python)

Такой приём используется, когда требуется целая часть числа, например, при обработке цен или размеров. Важно: из-за представления float может возникнуть потеря точности для больших чисел. Для точных вычислений с десятичными числами лучше использовать Decimal из модуля decimal.

Проблема: Если строка содержит нецифровые символы, кроме точки, например '3.14abc', float() также вызовет ValueError. Требуется предварительная очистка.

Как преобразовать строку с разделителями тысяч, например '1,234'?

Запятые можно удалить методом replace() перед вызовом int():

int('1,234'.replace(',', ''))

дробное число в целое python (преобразование дробного числа в целое в python)

1234

Python число в строку (преобразование числа в строку в python)

Аналогично удаляются пробелы, точки (в некоторых локалях), символы валюты. При работе с разными форматами чисел (европейский, американский) необходимо предварительно нормализовать строку.

Типичная ошибка: Удаление запятых может привести к неверному значению, если запятая используется как десятичный разделитель. В таких случаях требуется замена запятой на точку и последующее преобразование через float.

Как преобразовать список строк в список целых чисел?

Для массового преобразования удобно использовать функцию map() или генератор списка:

strings = ['10', '20', '30']
numbers = list(map(int, strings))
print(numbers)

Python привести к int (преобразование в целое число int в python)

[10, 20, 30]

Python элемент списка в строку (преобразование элемента списка в строку в python)

Либо:

numbers = [int(s) for s in strings]
[10, 20, 30]

Если в списке есть некорректные строки, необходимо добавить обработку ошибок, например, с помощью try/except внутри генератора.

Проблема: map() не отфильтровывает ошибки. При наличии некорректных строк программа прервётся. Альтернатива - написать вспомогательную функцию с обработкой и использовать её в map.

Общие типичные ошибки при преобразовании строки в int:

  • ValueError: если строка пустая, содержит недопустимые символы (буквы, точки, запятые без предварительной обработки).
  • TypeError: если аргумент не является строкой (например, передан список или число).
  • UnicodeEncodeError в старых версиях при использовании не ASCII цифр (например, арабских). Современные версии Python поддерживают цифры из других письменностей.

Расширенные примеры и приёмы

Пример 1. Автоопределение системы счисления

С помощью base=0 функция int() определяет основание по префиксу строки:

Пример
print(int('0b1101', 0))
print(int('0o77', 0))
print(int('0x1A', 0))
13
63
26

Пример 2. Извлечение целого числа из строки с текстом

Удаление всех нецифровых символов, кроме начального минуса, с помощью регулярного выражения:

Пример
import re
def extract_int(text):
    cleaned = re.sub(r'[^\d-]', '', text)
    # удаляем лишние минусы (оставляем первый, если есть)
    parts = cleaned.split('-')
    if parts[0] == '' and len(parts) > 1:
        # строка начиналась с минуса
        cleaned = '-' + ''.join(parts[1:])
    else:
        cleaned = ''.join(parts)
    return int(cleaned) if cleaned else None

print(extract_int('Цена: -123 руб. №45'))
-12345

Пример 3. Извлечение нескольких чисел из строки с помощью регулярных выражений

Пример
import re
text = 'Температура: -5, скорость 10 м/с, высота 300'
numbers = [int(x) for x in re.findall(r'-?\d+', text)]
print(numbers)
[-5, 10, 300]

Пример 4. Цикл с повторным вводом до корректного целого числа

Пример
def get_int(prompt):
    while True:
        s = input(prompt)
        try:
            return int(s)
        except ValueError:
            print('Некорректный ввод. Попробуйте снова.')

# Пример использования (в консоли):
# age = get_int('Введите возраст: ')
# print('Возраст:', age)

Результат зависит от ввода пользователя.

Пример 5. Преобразование строки с пробелами как разделителями тысяч

Пример
s = '1 234 567 890'
# удаляем все пробелы
num = int(s.replace(' ', ''))
print(num)
1234567890

Пример 6. Преобразование строки с символом валюты

Пример
s = '$500'
num = int(s.replace('$', '').strip())
print(num)
500

Пример 7. Использование map с функцией, обрабатывающей ошибки

Пример
def safe_int(s):
    try:
        return int(s)
    except ValueError:
        return None

strings = ['10', 'abc', '20', '', '30']
numbers = list(filter(None, map(safe_int, strings)))
print(numbers)
[10, 20, 30]

Пример 8. Преобразование строки с большой точностью через Decimal

Пример
from decimal import Decimal
s = '123456789012345678901234567890'
num = int(Decimal(s))
print(num)
123456789012345678901234567890

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

En
Python string integer (python)