В 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”.