Converteix la cadena numèrica str en número int, flotant a Python

Negocis

Si voleu convertir una cadena de nombres en valors numèrics a Python, utilitzeu int() per convertir en nombres enters i float() per convertir en nombres de coma flotant.

Aquí s’explica el següent, juntament amb el codi d’exemple.

  • Ús bàsic
    • Converteix cadenes numèriques en nombres enters:int()
    • Converteix una cadena de números en nombres de coma flotant:float()
  • Ús especial
    • Converteix cadenes en notació binària, octal i hexadecimal en números
    • Converteix cadenes en notació exponencial en valors numèrics
    • Converteix cadenes de nombres àrabs d’amplada completa en números
    • Converteix una cadena de caràcters xinesos en números

Per convertir un valor numèric en una cadena, utilitzeu str().

Si voleu convertir números o cadenes a diversos formats, utilitzeu la funció format() o el mètode de cadena str.format(). Llavors podeu convertir-lo a la notació 0, binari, octal, hexadecimal, exponencial, etc. Consulteu l’article següent per obtenir més informació.

També pot convertir una llista de cadenes en una llista de números. Consulteu l’article següent per obtenir més informació.

Converteix cadenes numèriques en nombres enters:int()

Podeu utilitzar int() per convertir una cadena de números en números de tipus enter.

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

Els decimals, inclosos els punts decimals, i les cadenes separades per comes donaran lloc a un 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'

Les cadenes delimitades per comes es poden convertir eliminant la coma (substituint-la per una cadena buida) mitjançant el mètode replace().

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

Converteix una cadena de números en nombres de coma flotant:float()

Un float() es pot utilitzar per convertir una cadena de números en un tipus de nombre de coma flotant.

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

Les cadenes amb la part entera omesa es converteixen complementant la part entera amb 0.

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

Les cadenes senceres també es converteixen en nombres de coma flotant.

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

Converteix cadenes en notació binària, octal i hexadecimal en números

Si s’especifica una base com a segon argument d’int(), la cadena es pot convertir en un enter int considerant-la com a binari, octal, hexadecimal, etc.

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

Com en els exemples anteriors, si s’omet, el nombre es considera un nombre decimal.

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

Si la base s’estableix en 0, la conversió es basa en el prefix de cadena. Vegeu a continuació els prefixos de cadena.

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

Els prefixos i els alfabets hexadecimals poden ser majúscules o minúscules.

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

Consulteu l’article següent per obtenir informació sobre la interconversió de nombres i cadenes binaris, octals i hexadecimals.

Converteix cadenes en notació exponencial en valors numèrics

Les cadenes en notació exponencial es poden convertir directament al tipus float amb 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'>

La e minúscula també pot ser E en majúscula.

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

Converteix cadenes de nombres àrabs d’amplada completa en números

Els números aràbics d’amplada completa es poden convertir directament en números mitjançant int() o float().

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

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

Tanmateix, si símbols com ara menys i punts decimals són caràcters d’amplada completa, es generarà un ValueError.

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

Els números es poden convertir sense problemes si són caràcters d’amplada completa, però els punts menys i decimals són caràcters de mitja amplada. la conversió és possible substituint símbols d’amplada completa per símbols de mitja amplada utilitzant el mètode substituir().

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

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

Converteix una cadena de caràcters xinesos en números

La funció unicodedata.numeric() del mòdul unicodedata es pot utilitzar per convertir un únic caràcter xinès Unicode en un número de tipus de coma flotant.

Si no és una sola lletra, es produirà un error. A més, els caràcters no numèrics provocaran un 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
Copied title and URL