Teisenda number string str arvuks int, float Pythonis

Äri

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

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.

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
Copied title and URL