Pretvarjanje številskega niza str v število int, float v Pythonu

Posel

Če želite v Pythonu pretvoriti niz števil v številske vrednosti, uporabite int() za pretvorbo v cela števila in float() za pretvorbo v števila s plavajočo vejico.

V nadaljevanju je razloženo naslednje, skupaj z vzorčno kodo.

  • Osnovna uporaba
    • Pretvarjanje številskih nizov v cela števila:int()
    • Pretvarjanje niza števil v števila s plavajočo vejico:float()
  • Posebna uporaba
    • Pretvarja nize v dvojiškem, osmeriškem in šestnajstiškem zapisu v števila
    • Pretvarja nize v eksponentnem zapisu v numerične vrednosti
    • Pretvarjanje nizov arabskih številk polne širine v številke
    • Pretvarjanje niza kitajskih znakov v številke

Če želite številsko vrednost pretvoriti v niz, uporabite funkcijo str().

Če želite številke ali nize pretvoriti v različne formate, uporabite funkcijo format() ali metodo str.format(). Nato lahko pretvorite v 0-črkovni, dvojiški, osmiški, šestnajstiški, eksponentni zapis itd. Za podrobnosti glejte naslednji članek.

Prav tako lahko pretvori seznam nizov v seznam številk. Za podrobnosti glejte naslednji članek.

Pretvarjanje številskih nizov v cela števila: int()

S funkcijo int() lahko niz števil pretvorite v cela števila.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Pri decimalnih številih, vključno z decimalnimi vejicami, in nizih, ločenih z vejicami, bo prišlo do napake 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'

Nizove, omejene z vejico, lahko pretvorite tako, da odstranite vejico (nadomestite jo s praznim nizom) z metodo replace().

print(int('10,000'.replace(',', '')))
# 10000

Pretvarjanje niza števil v števila s plavajočo vejico: float()

S funkcijo float() lahko pretvorite niz števil v tip števila s plavajočo vejico.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Nizi z izpuščenim celoštevilskim delom se pretvorijo tako, da se celoštevilski del dopolni z 0.

print(float('.23'))
# 0.23

Celoštevilski nizi se prav tako pretvorijo v števila s plavajočo vejico.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Pretvarja nize v dvojiškem, osmeriškem in šestnajstiškem zapisu v števila

Če je kot drugi argument funkcije int() naveden radix, lahko niz pretvorimo v celoštevilski int tako, da ga obravnavamo kot dvojiški, osmiški, šestnajstiški itd.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Tako kot v prejšnjih primerih, če je številka izpuščena, se šteje, da je decimalno število.

print(int('100', 10))
print(int('100'))
# 100
# 100

Če je radix nastavljen na 0, pretvorba temelji na predponi niza. Za predpono niza glejte spodaj.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Predpone in šestnajstiške abecede so lahko velike ali male črke.

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

Informacije o pretvorbi binarnih, oktalnih in heksadecimalnih števil in nizov najdete v naslednjem članku.

Pretvarja nize v eksponentnem zapisu v numerične vrednosti

Nizove v eksponentnem zapisu lahko pretvorite neposredno v tip float s funkcijo 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'>

Mali e se lahko piše tudi z veliko začetnico E.

print(float('1.23E-4'))
# 0.000123

Pretvarjanje nizov arabskih številk polne širine v številke

Arabske številke polne širine je mogoče pretvoriti neposredno v številke z int() ali float().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Če pa so simboli, kot so minus in decimalke, znaki polne širine, se ustvari napaka ValueError.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Številke je mogoče pretvoriti brez težav, če so to znaki polne širine, vendar so minusi in decimalke znaki polovične širine. pretvorba je mogoča z zamenjavo simbolov polne širine s simboli polovične širine z uporabo metode replace().

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Pretvarjanje niza kitajskih znakov v številke

Funkcijo unicodedata.numeric() v modulu unicodedata lahko uporabite za pretvorbo posameznega kitajskega znaka Unicode v število s spremenljivo vejico.

Če ne gre za eno črko, se pojavi napaka. Napako povzročijo tudi neštevilski znaki.

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