Преобразование числовой строки str в число int, float в Python

Бизнес

Если вы хотите преобразовать строку чисел в числовые значения в Python, используйте int() для преобразования в целые числа и float() для преобразования в числа с плавающей точкой.

Ниже приводится пояснение, а также пример кода.

  • Основное использование
    • Преобразование числовых строк в целые числа:int()
    • Преобразование строки чисел в числа с плавающей точкой:float()
  • Специальное использование
    • Преобразование строк в двоичной, восьмеричной и шестнадцатеричной системе счисления в числа
    • Преобразование строк в экспоненциальной нотации в числовые значения
    • Преобразование полноразмерных строк арабских цифр в числа
    • Преобразование строки китайских символов в числа

Чтобы преобразовать числовое значение в строку, используйте str().

Если вы хотите преобразовать числа или строки в различные форматы, используйте функцию format() или строковый метод str.format(). Затем вы можете преобразовать в 0-заполнение, двоичную, восьмеричную, шестнадцатеричную, экспоненциальную нотацию и т.д. Подробности см. в следующей статье.

Он также может преобразовывать список строк в список чисел. Подробнее см. в следующей статье.

Преобразование числовых строк в целые числа: int()

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

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Десятичные числа, включая десятичные точки, и строки, разделенные запятыми, приведут к ошибке ValueError.

# 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'

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

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

Преобразование строки чисел в числа с плавающей точкой: float()

float() можно использовать для преобразования строки чисел в тип чисел с плавающей точкой.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Строки с опущенной целочисленной частью преобразуются путем дополнения целочисленной части до 0.

print(float('.23'))
# 0.23

Целочисленные строки также преобразуются в числа с плавающей точкой.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

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

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

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Как и в предыдущих примерах, если число опущено, то оно считается десятичным числом.

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

Если радикс установлен в 0, преобразование основывается на префиксе строки. О префиксах строк см. ниже.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 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

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

Преобразование строк в экспоненциальной нотации в числовые значения

Строки в экспоненциальной нотации могут быть преобразованы непосредственно в тип float с помощью функции 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.

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

Преобразование полноразмерных строк арабских цифр в числа

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

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Однако если такие символы, как минус и десятичные точки, являются символами полной ширины, будет сгенерирована ошибка ValueError.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Числа могут быть преобразованы без проблем, если они являются символами полной ширины, но минус и десятичные точки являются символами половинной ширины. преобразование возможно путем замены символов полной ширины на символы половинной ширины с помощью метода replace().

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Преобразование строки китайских символов в числа

Функция unicodedata.numeric() в модуле unicodedata может быть использована для преобразования одного китайского символа Unicode в число типа числа с плавающей точкой.

Если это не одна буква, произойдет ошибка. Нечисловые символы также приведут к ошибке.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character
Copied title and URL