Jos haluat muuntaa lukujonon numeerisiksi arvoiksi Pythonissa, käytä int()-toimintoa kokonaislukujen muuntamiseen ja float()-toimintoa liukulukujen muuntamiseen.
Seuraavat asiat selitetään tässä yhdessä esimerkkikoodin kanssa.
- Peruskäyttö
- Muunna numeeriset merkkijonot kokonaisluvuiksi:
int()
- Muunna lukujono liukuluvuiksi.:
float()
- Muunna numeeriset merkkijonot kokonaisluvuiksi:
- Erityiskäyttö
- Muuntaa merkkijonot binääri-, oktaali- ja heksadesimaalimerkinnöillä numeroiksi
- Muuntaa merkkijonot eksponentiaalisessa merkintätavassa numeerisiksi arvoiksi.
- Muunna täysleveät arabialaiset numerosarjat numeroiksi.
- Muunna kiinalaisten merkkien merkkijono numeroiksi
Jos haluat muuntaa numeerisen arvon merkkijonoksi, käytä str() -toimintoa.
Jos haluat muuntaa numeroita tai merkkijonoja eri muotoihin, käytä format()-funktiota tai merkkijonomenetelmää str.format(). Sitten voit muuntaa 0-täytteiseksi, binääriseksi, oktaali-, heksadesimaali-, eksponentiaaliseksi merkinnäksi jne. Katso lisätietoja seuraavasta artikkelista.
Se voi myös muuntaa merkkijonojen luettelon numeroiden luetteloksi. Katso lisätietoja seuraavasta artikkelista.
- Muunna numeeriset merkkijonot kokonaisluvuiksi: int()
- Muunna lukujono liukuluvuiksi.: float()
- Muuntaa merkkijonot binääri-, oktaali- ja heksadesimaalimerkinnöillä numeroiksi
- Muuntaa merkkijonot eksponentiaalisessa merkintätavassa numeerisiksi arvoiksi.
- Muunna täysleveät arabialaiset numerosarjat numeroiksi.
- Muunna kiinalaisten merkkien merkkijono numeroiksi
Muunna numeeriset merkkijonot kokonaisluvuiksi: int()
Voit käyttää int()-toimintoa muuntaa lukujonon kokonaisluvuiksi.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Desimaaliluvut, mukaan lukien desimaalipisteet, ja pilkulla erotetut merkkijonot aiheuttavat ValueError-virheen.
# 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'
Pilkulla erotetut merkkijonot voidaan muuntaa poistamalla pilkku (korvaamalla se tyhjällä merkkijonolla) käyttämällä replace()-metodia.
print(int('10,000'.replace(',', '')))
# 10000
Muunna lukujono liukuluvuiksi.: float()
Float()-toiminnolla voidaan muuntaa lukujono liukulukutyypiksi.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Merkkijonot, joiden kokonaislukuosa on jätetty pois, muunnetaan täydentämällä kokonaislukuosa 0:lla.
print(float('.23'))
# 0.23
Myös kokonaislukujonot muunnetaan liukuluvuiksi.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Muuntaa merkkijonot binääri-, oktaali- ja heksadesimaalimerkinnöillä numeroiksi
Jos int():n toisena argumenttina annetaan radiksi, merkkijono voidaan muuntaa kokonaisluvuksi int tarkastelemalla sitä binääri-, oktaali-, heksadesimaalilukuna jne.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Kuten edellisissä esimerkeissä, jos luku jätetään pois, sen katsotaan olevan desimaaliluku.
print(int('100', 10))
print(int('100'))
# 100
# 100
Jos radix on asetettu arvoon 0, muunnos perustuu merkkijonon etuliitteeseen. Katso alla olevat merkkijonon etuliitteet.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Etuliitteet ja kuusiokirjaimet voivat olla joko isoja tai pieniä kirjaimia.
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
Katso seuraavasta artikkelista tietoa binääri-, oktaali- ja heksadesimaalilukujen ja merkkijonojen muuntamisesta.
Muuntaa merkkijonot eksponentiaalisessa merkintätavassa numeerisiksi arvoiksi.
Eksponenttimerkinnällä kirjoitetut merkkijonot voidaan muuntaa suoraan float-tyyppisiksi funktiolla 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'>
Pienaakkoset e voidaan kirjoittaa myös isolla alkukirjaimella E.
print(float('1.23E-4'))
# 0.000123
Muunna täysleveät arabialaiset numerosarjat numeroiksi.
Täysleveät arabialaiset numerot voidaan muuntaa suoraan numeroiksi int()- tai float()-ohjelmilla.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Jos symbolit, kuten miinusmerkit ja desimaalipisteet, ovat kuitenkin täyslaidallisia merkkejä, syntyy ValueError-virhe.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Numerot voidaan muuntaa ongelmitta, jos ne ovat täysleveät merkit, mutta miinus- ja desimaalipisteet ovat puolileveät merkit. muuntaminen on mahdollista korvaamalla täysleveät symbolit puolileveillä symboleilla replace()-metodilla.
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Muunna kiinalaisten merkkien merkkijono numeroiksi
Unicodedata-moduulin unicodedata.numeric()-funktiota voidaan käyttää yksittäisen Unicode-kiinalaisen merkin muuntamiseen liukulukutyyppiseksi numeroksi.
Jos se ei ole yksittäinen kirjain, tapahtuu virhe. Myös muut kuin numeeriset merkit aiheuttavat virheen.
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