В 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, то преобразование происходит на основании префикса строки (0b, 0o, 0x or 0B, 0O, 0X):
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».
