Конвертиране на цифров низ 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