Ако искате да преобразувате низ от числа в числови стойности в Python, използвайте int() за преобразуване в цели числа и float() за преобразуване в числа с плаваща запетая.
Тук е обяснено следното, както и примерен код.
- Основно използване
- Конвертиране на числови низове в цели числа:
int()
- Конвертиране на низ от числа в числа с плаваща запетая:
float()
- Конвертиране на числови низове в цели числа:
- Специална употреба
- Преобразува низове в двоична, осмична и шестнадесетична нотация в числа
- Преобразува низове в експоненциален запис в числови стойности
- Конвертиране на низове от арабски цифри с пълна ширина в числа
- Конвертиране на низ от китайски символи в числа
За преобразуване на числова стойност в низ използвайте функцията str().
Ако искате да конвертирате числа или низове в различни формати, използвайте функцията format() или метода за низове str.format(). След това можете да конвертирате в 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
Вижте следната статия за информация относно преобразуването на двоични, осмични и шестнадесетични числа и низове.
Преобразува низове в експоненциален запис в числови стойности
Низове в експоненциален запис могат да се преобразуват директно в тип 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