Č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()
- Pretvarjanje številskih nizov v cela števila:
- 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.
- POVEZANO:Pretvorba formata v Pythonu, format (polnjenje 0, eksponentni zapis, šestnajstiški zapis itd.)
Prav tako lahko pretvori seznam nizov v seznam številk. Za podrobnosti glejte naslednji članek.
- Pretvarjanje številskih nizov v cela števila: int()
- Pretvarjanje niza števil v števila s plavajočo vejico: float()
- 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
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.
0b0B
0o0O
0x0X
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.
- POVEZANO:Pretvarjanje binarnih, oktalnih in heksadecimalnih števil in nizov med seboj v programu Python
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