Kui soovite Pythonis teisendada numbrite stringi numbrilisteks väärtusteks, kasutage täisarvudeks teisendamiseks funktsiooni int() ja ujukomaarvudeks teisendamiseks funktsiooni float().
Siin selgitatakse järgmist koos näidiskoodiga.
- Põhiline kasutamine
- Numbriliste stringide teisendamine täisarvudeks:
int()
- Numbrite stringi teisendamine ujukomaarvudeks:
float()
- Numbriliste stringide teisendamine täisarvudeks:
- Erikasutus
- Teisendab stringid binaarses, oktaal- ja kuueteistkümnendsüsteemis numbriteks.
- Teisendab stringid eksponentsiaalses märkimisviisis arvväärtusteks.
- Täieliku laiusega araabia numbrite stringide teisendamine numbriteks
- Hiina tähemärkide jada teisendamine numbriteks
Numbrilise väärtuse teisendamiseks stringiks kasutage str().
Kui soovite teisendada numbreid või stringisid erinevatesse vormingutesse, kasutage funktsiooni format() või stringi meetodit str.format(). Siis saate teisendada 0-tähega, binaarseks, kaheksakohaliseks, kuueteistkümnendiks, eksponentsiaalseks märkimisviisiks jne. Vaata lähemalt järgmisest artiklist.
Samuti saab see teisendada stringide loendi numbrite loendiks. Vaata üksikasju järgmises artiklis.
- Numbriliste stringide teisendamine täisarvudeks: int()
- Numbrite stringi teisendamine ujukomaarvudeks: float()
- Teisendab stringid binaarses, oktaal- ja kuueteistkümnendsüsteemis numbriteks.
- Teisendab stringid eksponentsiaalses märkimisviisis arvväärtusteks.
- Täieliku laiusega araabia numbrite stringide teisendamine numbriteks
- Hiina tähemärkide jada teisendamine numbriteks
Numbriliste stringide teisendamine täisarvudeks: int()
Saate kasutada funktsiooni int() numbrite stringi teisendamiseks täisarvutüüpi numbriteks.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Kümnendmärgid, sealhulgas kümnendmärgid, ja komadega eraldatud stringid annavad tulemuseks 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'
Komaga eraldatud stringid saab teisendada, eemaldades koma (asendades selle tühja stringiga), kasutades meetodit replace().
print(int('10,000'.replace(',', '')))
# 10000
Numbrite stringi teisendamine ujukomaarvudeks: float()
Programmi float() saab kasutada numbrite stringi teisendamiseks ujukomaarvutüübiks.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Stringid, mille täisarvuline osa on välja jäetud, teisendatakse, täiendades täisarvulist osa 0-ga.
print(float('.23'))
# 0.23
Ka täisarvulised stringid teisendatakse ujukomaarvudeks.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Teisendab stringid binaarses, oktaal- ja kuueteistkümnendsüsteemis numbriteks.
Kui int() teise argumendina on määratud radix, saab stringi teisendada täisarvuks int, käsitledes seda binaar-, oktaal-, heksadekaal- jne. kujul.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Nagu eelmiste näidete puhul, loetakse number, kui see on välja jäetud, kümnendarvuks.
print(int('100', 10))
print(int('100'))
# 100
# 100
Kui radixiks on määratud 0, põhineb teisendus stringi prefiksile. Vt allpool stringi prefiksid.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Prefiksid ja kuuekohalised tähestikud võivad olla nii suur- kui ka väiketähtedega.
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
Binaarsete, oktaal- ja heksadetsimaalsete numbrite ja stringide teisendamise kohta vt järgmist artiklit.
- RELATED:Binaarsete, oktaal- ja heksadetsimaalsete numbrite ja stringide teisendamine üksteiseks Pythonis
Teisendab stringid eksponentsiaalses märkimisviisis arvväärtusteks.
Eksponentsiaalses märkimisviisis stringid saab otse float-tüüpi teisendada funktsiooniga 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'>
Väike e võib olla ka suurtähtedega E.
print(float('1.23E-4'))
# 0.000123
Täieliku laiusega araabia numbrite stringide teisendamine numbriteks
Täieliku laiusega araabia numbreid saab teisendada otse arvudeks int() või float() abil.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Kui aga sellised sümbolid nagu miinus ja kümnendkohad on täies laiuses tähemärgid, tekib ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Numbrid saab probleemideta teisendada, kui need on täies laiuses tähemärgid, kuid miinus- ja kümnendmärgid on poole laiuses tähemärgid. teisendamine on võimalik täies laiuses tähemärkide asendamisega poole laiuses tähemärkidega, kasutades meetodit replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Hiina tähemärkide jada teisendamine numbriteks
Unicodedata.numeric() funktsiooni unicodedata moodulis saab kasutada ühe Unicode hiina tähemärgi teisendamiseks ujukoma-tüüpi numbriks.
Kui tegemist ei ole ühe tähega, tekib viga. Samuti põhjustavad vea mitte-numbrilised tähemärgid.
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