Umbreyttu talnastreng str í tölu int, fljótandi í Python

Viðskipti

Ef þú vilt umbreyta talnastreng í tölugildi í Python, notaðu int() til að umbreyta í heiltölur og float() til að breyta í flottölur.

Eftirfarandi er útskýrt hér ásamt sýnishornskóða.

  • Grunnnotkun
    • Umbreyttu talnastrengi í heiltölur:int()
    • Umbreyttu talnastreng í flottölur:float()
  • Sérstök notkun
    • Breytir strengjum í tvíundar-, áttundar- og sextánsnúmerum í tölur
    • Breytir strengjum í veldisvísi í tölugildi
    • Umbreyttu arabíska talnastrengi í fullri breidd í tölur
    • Umbreyttu streng af kínverskum stöfum í tölur

Til að breyta tölugildi í streng, notaðu str().

Ef þú vilt breyta tölum eða strengjum í ýmis snið, notaðu format() fallið eða strengjaaðferðina str.format(). Síðan er hægt að umbreyta í 0-fyllingu, tvöfalda, áttund, sextánda, veldisvísi, osfrv. Sjá eftirfarandi grein fyrir frekari upplýsingar.

Það getur líka breytt lista yfir strengi í lista yfir tölur. Sjá eftirfarandi grein fyrir frekari upplýsingar.

Umbreyttu talnastrengi í heiltölur:int()

Þú getur notað int() til að umbreyta talnastreng í heiltölugerð.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Aukastafir, þar á meðal aukastafir, og strengir aðskildir með kommum munu leiða til 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'

Hægt er að breyta kommu afmörkuðum strengjum með því að fjarlægja kommu (skipta henni út fyrir tóman streng) með því að nota replace() aðferðina.

print(int('10,000'.replace(',', '')))
# 10000

Umbreyttu talnastreng í flottölur:float()

Float() er hægt að nota til að umbreyta talnastreng í flottalnategund.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Strengum þar sem heiltöluhlutanum er sleppt er breytt með því að bæta heiltöluhlutanum við 0.

print(float('.23'))
# 0.23

Heiltölustrengjum er einnig breytt í flottölur.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Breytir strengjum í tvíundar-, áttundar- og sextánsnúmerum í tölur

Ef radix er tilgreint sem önnur rök í int() er hægt að breyta strengnum í heiltölu int með því að líta á hann sem tvíundir, áttunda, sextánda, osfrv.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Eins og í fyrri dæmunum, ef henni er sleppt, telst talan vera aukastaf.

print(int('100', 10))
print(int('100'))
# 100
# 100

Ef radix er stillt á 0 er umbreytingin byggð á strengsforskeytinu. Sjá strengjaforskeyti hér að neðan.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Forskeyti og sexkantsstafróf geta verið annað hvort hástafir eða lágstafir.

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

Sjá eftirfarandi grein fyrir upplýsingar um víxlbreytingu á tvíundir, áttund og sextán talna og strengja.

Breytir strengjum í veldisvísi í tölugildi

Strengi í veldisvísisnótunum er hægt að breyta beint í flotgerð með 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'>

Lítill stafur e má einnig vera með stórum E.

print(float('1.23E-4'))
# 0.000123

Umbreyttu arabíska talnastrengi í fullri breidd í tölur

Arabískum tölum í fullri breidd er hægt að breyta beint í tölur með int() eða float().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Hins vegar, ef tákn eins og mínus og aukastafir eru stafir á fullri breidd, verður ValueError til.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Hægt er að umbreyta tölum án vandræða ef um er að ræða stafi í fullri breidd, en mínus og aukastafir eru stafir á hálfri breidd. umbreyting er möguleg með því að skipta út táknum á fullri breidd fyrir táknum með hálfbreidd með því að nota replace() aðferðina.

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Umbreyttu streng af kínverskum stöfum í tölur

Hægt er að nota unicodedata.numeric() aðgerðina í unicodedata einingunni til að umbreyta einum Unicode kínverskum staf í flottölutegundarnúmer.

Ef það er ekki einn stafur mun villa koma upp. Einnig munu stafir sem ekki eru tölustafir valda villu.

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