Если вы хотите преобразовать строку чисел в числовые значения в Python, используйте int() для преобразования в целые числа и float() для преобразования в числа с плавающей точкой.
Ниже приводится пояснение, а также пример кода.
- Основное использование
- Преобразование числовых строк в целые числа:
int()
- Преобразование строки чисел в числа с плавающей точкой:
float()
- Преобразование числовых строк в целые числа:
- Специальное использование
- Преобразование строк в двоичной, восьмеричной и шестнадцатеричной системе счисления в числа
- Преобразование строк в экспоненциальной нотации в числовые значения
- Преобразование полноразмерных строк арабских цифр в числа
- Преобразование строки китайских символов в числа
Чтобы преобразовать числовое значение в строку, используйте str().
Если вы хотите преобразовать числа или строки в различные форматы, используйте функцию format() или строковый метод str.format(). Затем вы можете преобразовать в 0-заполнение, двоичную, восьмеричную, шестнадцатеричную, экспоненциальную нотацию и т.д. Подробности см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Преобразование формата в Python, формат (0-заполнение, экспоненциальная нотация, шестнадцатеричная и т.д.)
Он также может преобразовывать список строк в список чисел. Подробнее см. в следующей статье.
- Преобразование числовых строк в целые числа: int()
- Преобразование строки чисел в числа с плавающей точкой: float()
- Преобразование строк в двоичной, восьмеричной и шестнадцатеричной системе счисления в числа
- Преобразование строк в экспоненциальной нотации в числовые значения
- Преобразование полноразмерных строк арабских цифр в числа
- Преобразование строки китайских символов в числа
Преобразование числовых строк в целые числа: 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
Информацию о взаимопреобразовании двоичных, восьмеричных и шестнадцатеричных чисел и строк см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Преобразование двоичных, восьмеричных и шестнадцатеричных чисел и строк друг в друга в Python
Преобразование строк в экспоненциальной нотации в числовые значения
Строки в экспоненциальной нотации могут быть преобразованы непосредственно в тип 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