I-convert ang number string str sa number int, lumutang sa Python

Negosyo

Kung gusto mong i-convert ang isang string ng mga numero sa mga numeric na halaga sa Python, gumamit ng int() upang i-convert sa mga integer at float() upang ma-convert sa mga floating point na numero.

Ang mga sumusunod ay ipinaliwanag dito, kasama ang sample code.

  • Pangunahing paggamit
    • I-convert ang mga numeric na string sa mga integer:int()
    • I-convert ang isang string ng mga numero sa mga floating point na numero:float()
  • Espesyal na Paggamit
    • Kino-convert ang mga string sa binary, octal, at hexadecimal notation sa mga numero
    • Kino-convert ang mga string sa exponential notation sa mga numerical value
    • I-convert ang full-width na Arabic numeral string sa mga numero
    • I-convert ang isang string ng mga Chinese na character sa mga numero

Upang i-convert ang isang numeric na halaga sa isang string, gamitin ang str().

Kung gusto mong i-convert ang mga numero o string sa iba’t ibang format, gamitin ang format() function o ang string method str.format(). Pagkatapos ay maaari kang mag-convert sa 0-fill, binary, octal, hexadecimal, exponential notation, atbp. Tingnan ang sumusunod na artikulo para sa mga detalye.

Maaari din nitong i-convert ang isang listahan ng mga string sa isang listahan ng mga numero. Tingnan ang sumusunod na artikulo para sa mga detalye.

I-convert ang mga numeric na string sa mga integer:int()

Maaari mong gamitin ang int() upang i-convert ang isang string ng mga numero sa mga numero ng uri ng integer.

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

Ang mga desimal, kabilang ang mga decimal point, at mga string na pinaghihiwalay ng mga kuwit ay magreresulta sa isang 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'

Maaaring ma-convert ang mga comma-delimited string sa pamamagitan ng pag-alis ng kuwit (pagpapalit nito ng walang laman na string) gamit ang replace() na paraan.

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

I-convert ang isang string ng mga numero sa mga floating point na numero:float()

Ang isang float() ay maaaring gamitin upang i-convert ang isang string ng mga numero sa isang floating-point na uri ng numero.

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

Ang mga string na may integer na bahagi ay tinanggal ay kino-convert sa pamamagitan ng pagdagdag sa integer na bahagi na may 0.

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

Ang mga integer string ay na-convert din sa mga floating-point na numero.

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

Kino-convert ang mga string sa binary, octal, at hexadecimal notation sa mga numero

Kung ang isang radix ay tinukoy bilang ang pangalawang argumento sa int(), ang string ay maaaring ma-convert sa isang integer int sa pamamagitan ng pagsasaalang-alang dito bilang isang binary, octal, hexadecimal, atbp.

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

Tulad ng sa mga nakaraang halimbawa, kung aalisin, ang numero ay itinuturing na isang decimal na numero.

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

Kung ang radix ay nakatakda sa 0, ang conversion ay batay sa string prefix. Tingnan sa ibaba ang mga string prefix.

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

Ang mga prefix at hex na alpabeto ay maaaring uppercase o lowercase.

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

Tingnan ang sumusunod na artikulo para sa impormasyon sa interconversion ng binary, octal, at hexadecimal na mga numero at string.

Kino-convert ang mga string sa exponential notation sa mga numerical value

Ang mga string sa exponential notation ay maaaring direktang i-convert sa float type na may 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'>

Ang maliit na titik e ay maaari ding gawing malaking titik E.

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

I-convert ang full-width na Arabic numeral string sa mga numero

Ang mga full-width na Arabic numeral ay maaaring direktang i-convert sa mga numero sa pamamagitan ng int() o float().

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

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

Gayunpaman, kung ang mga simbolo tulad ng mga minus at decimal na panahon ay mga full-width na character, isang ValueError ang bubuo.

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

Maaaring ma-convert ang mga numero nang walang problema kung ang mga ito ay mga full-width na character, ngunit ang mga minus at decimal na puntos ay kalahating lapad na mga character. Ang conversion ay posible sa pamamagitan ng pagpapalit ng buong lapad na mga simbolo ng kalahating lapad na mga simbolo gamit ang replace() na paraan.

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

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

I-convert ang isang string ng mga Chinese na character sa mga numero

Ang unicodedata.numeric() function sa unicodedata module ay maaaring gamitin upang i-convert ang isang Unicode Chinese character sa isang floating-point na uri ng numero ng numero.

Kung ito ay hindi isang solong titik, isang error ang magaganap. Gayundin, ang mga hindi numeric na character ay magdudulot ng error.

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