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()
- Converteix cadenes numèriques en nombres enters:
- Ú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ó.
- RELACIONATS:Conversió de format en Python, format (emplenament 0, notació exponencial, hexadecimal, etc.)
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()
- Converteix una cadena de números en nombres de coma flotant:float()
- 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
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