Pretvorite string brojeva str u broj int, float u Pythonu

Poslovanje

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()
  • 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.

Također može pretvoriti popis nizova u popis brojeva. Za detalje pogledajte sljedeći članak.

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