Как преобразовать строку в число в Python

В Python вы можете преобразовать строку в целое число или в число с плавающей точкой (т.е. значение типа str в значение типа int или float) при помощи встроенных функций int() и float().

Оглавление

Конвертируем строку в целое число

Функция int() преобразует строки в целочисленный тип данных (int).

print(int('100'))
print(type(int('100')))

# Результат:
# 100
# <class 'int'>

При этом применение int() к строке, содержащей точку или запятую, вызывает ошибку:

print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Примечание редакции: об ошибках можно почитать в статье “Ошибки и исключения в Python”.

Строку, разделенную запятыми, можно преобразовать, удалив запятые при помощи функции replace(). Ненужный символ заменяется пустой строкой (' ').

print(int('10,000'.replace(',', '')))

# Результат:
# 10000

Обратное преобразование делается при помощи функции str(). Почитать можно в статье “Как преобразовать целое число в строку”.

Конвертируем строку в число с плавающей точкой

Функция float() преобразует значение строкового типа в число с плавающей точкой (тип float).

print(float('1.23'))
print(type(float('1.23')))

# Результат:
# 1.23
# <class 'float'>

Также можно преобразовывать строки, в которых нет целой части числа:

print(float('.23'))

# Результат:
# 0.23

Строка, представляющая собой целое число, также преобразуется в число с плавающей точкой (тип float):

print(float('100'))
print(type(float('100')))

# Результат:
# 100.0
# <class 'float'>

Преобразование строки в двоичный, восьмеричный и шестнадцатеричный формат чисел

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

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))

# Результат:
# 4
# 64
# 256

По умолчанию второй аргумент равен 10. То есть строка преобразуется в число в десятичной системе счисления:

print(int('100', 10))
print(int('100'))

# Результат:
# 100
# 100

А если второй аргумент равен 0, то преобразование происходит на основании префикса строки (0b0o0x or 0B0O0X):

print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))

# Результат:
# 4
# 64
# 256

Префиксы и строки, которые преобразуются в шестнадцатеричный формат, могут быть написаны как в верхнем, так и в нижнем регистре:

print(int('FF', 16))
print(int('ff', 16))

# Результат:
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))

# Результат:
# 255
# 255
# 255
# 255

Преобразование строки в экспоненциальном представлении в число

Cтрока в экспоненциальной нотации может быть преобразована в число с плавающей точкой при помощи функции float().

print(float('1.23e-4'))
print(type(float('1.23e-4')))

# Результат:
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))

# Результат:
# 12300.0
# <class 'float'>

Символ e может быть как в нижнем (e), так и в верхнем (E) регистре.

print(float('1.23E-4'))

# Результат:
# 0.000123

Перевод статьи “Convert a string to a number (int, float) in Python”.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *