Muunna numero merkkijono str numeroksi int, float Pythonissa

liiketoiminta

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

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