Ako želite pretvoriti niz brojeva u numeričke vrijednosti u Pythonu, koristite int() za pretvaranje u cijele brojeve i float() za pretvaranje u brojeve s pomičnim zarezom.
Ovdje je objašnjeno sljedeće, zajedno s uzorkom koda.
- Osnovna upotreba
- Pretvorite numeričke nizove u cijele brojeve:
int()
- Pretvorite niz brojeva u brojeve s pomičnim zarezom:
float()
- Pretvorite numeričke nizove u cijele brojeve:
- Posebna upotreba
- Pretvara nizove u binarnom, oktalnom i heksadecimalnom zapisu u brojeve
- Pretvara nizove u eksponencijalnom zapisu u numeričke vrijednosti
- Pretvorite nizove arapskih brojeva pune širine u brojeve
- Pretvorite niz kineskih znakova u brojeve
Za pretvaranje numeričke vrijednosti u niz koristite str().
Ako želite pretvoriti brojeve ili nizove u različite formate, koristite funkciju format() ili metodu stringa str.format(). Zatim možete pretvoriti u 0-fill, binarni, oktalni, heksadecimalni, eksponencijalni zapis, itd. Pogledajte sljedeći članak za detalje.
- POVEZANO:Konverzija formata u Pythonu, format (ispunjavanje 0, eksponencijalni zapis, heksadecimalni itd.)
Također može pretvoriti popis nizova u popis brojeva. Za detalje pogledajte sljedeći članak.
- Pretvorite numeričke nizove u cijele brojeve:int()
- Pretvorite niz brojeva u brojeve s pomičnim zarezom:float()
- Pretvara nizove u binarnom, oktalnom i heksadecimalnom zapisu u brojeve
- Pretvara nizove u eksponencijalnom zapisu u numeričke vrijednosti
- Pretvorite nizove arapskih brojeva pune širine u brojeve
- Pretvorite niz kineskih znakova u brojeve
Pretvorite numeričke nizove u cijele brojeve:int()
Možete koristiti int() za pretvaranje niza brojeva u brojeve cjelobrojnog tipa.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Decimale, uključujući decimalne točke, i nizovi odvojeni zarezima rezultirat će 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'
Nizovi razdvojeni zarezima mogu se pretvoriti uklanjanjem zareza (zamjenom ga praznim nizom) korištenjem metode replace().
print(int('10,000'.replace(',', '')))
# 10000
Pretvorite niz brojeva u brojeve s pomičnim zarezom:float()
float() se može koristiti za pretvaranje niza brojeva u tip broja s pomičnim zarezom.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Nizovi s izostavljenim cjelobrojnim dijelom pretvaraju se nadopunjavanjem cjelobrojnog dijela s 0.
print(float('.23'))
# 0.23
Cjelobrojni nizovi se također pretvaraju u brojeve s pomičnim zarezom.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Pretvara nizove u binarnom, oktalnom i heksadecimalnom zapisu u brojeve
Ako je radix naveden kao drugi argument za int(), niz se može pretvoriti u cijeli broj int smatrajući ga binarnim, oktalnim, heksadecimalnim itd.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Kao iu prethodnim primjerima, ako se izostavi, broj se smatra decimalnim brojem.
print(int('100', 10))
print(int('100'))
# 100
# 100
Ako je radix postavljen na 0, pretvorba se temelji na prefiksu niza. U nastavku pogledajte prefikse niza.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Prefiksi i heksabecede mogu biti velika ili mala.
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
Pogledajte sljedeći članak za informacije o međupretvorbi binarnih, oktalnih i heksadecimalnih brojeva i nizova.
Pretvara nizove u eksponencijalnom zapisu u numeričke vrijednosti
Nizovi u eksponencijalnom zapisu mogu se izravno pretvoriti u float tip pomoću 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'>
Mala slova e također se mogu pisati velikim slovima E.
print(float('1.23E-4'))
# 0.000123
Pretvorite nizove arapskih brojeva pune širine u brojeve
Arapski brojevi pune širine mogu se izravno pretvoriti u brojeve pomoću int() ili float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Međutim, ako su simboli kao što su minus i decimalne točke znakovi pune širine, generirat će se ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Brojevi se mogu pretvoriti bez problema ako su znakovi pune širine, ali minus i decimalne točke su znakovi polovice širine. pretvorba je moguća zamjenom simbola pune širine simbolima polovične širine pomoću metode replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Pretvorite niz kineskih znakova u brojeve
Funkcija unicodedata.numeric() u modulu unicodedata može se koristiti za pretvaranje jednog kineskog znaka Unicode u broj tipa broja s pomičnim zarezom.
Ako nije jedno slovo, pojavit će se pogreška. Također, nenumerički znakovi će uzrokovati pogrešku.
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