Reparar TypeError: cadena de formato no vacía pasada a Object.__format__ en Python
El método format()
en python le permite sustituir variables y realiza el formateo de datos. Este método no está diseñado para tratar con entradas que no sean las siguientes:
- Cadena denotada como
s
- Decimal denotado como
d
- Flotador denotado como
f
- Carácter denotado como
c
- Octal denotado como
o
- Hexadecimal denotado como
x
- Binario denotado como
b
- Exponencial se denota como
e
Si cualquier otro tipo de datos accede al método, el intérprete genera el siguiente error:
TypeError: non-empty format string passed to object.__format__
Causas y soluciones a TypeError: cadena de formato no vacía pasada a Object.__format__
en Python
Supongamos que intentamos invocar el método format()
sobre un tipo de datos que no tiene este método, por ejemplo, el tipo de datos byte
. El intérprete generará un error porque el objeto de tipo byte
no tiene el método format()
.
En el siguiente código, hemos invocado intencionalmente el método format()
con el tipo de datos byte
.
Código de ejemplo:
# Python 3.x
"{:10}".format(b"delftstack")
Producción :
#Python 3.x
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-1909c614b7f5> in <module>()
----> 1 '{:10}'.format(b'delftstack')
TypeError: unsupported format string passed to bytes.__format__
La solución a este error es convertir explícitamente el tipo de datos de byte a cadena. Usaremos el símbolo !s
para la conversión.
Código de ejemplo:
# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)
Producción :
#Python 3.x
b'delftstack'
El TypeError: cadena de formato no vacía pasada a object.__format__
también aparece cuando intentamos formatear Ninguno
.
Código de ejemplo:
# Python 3.x
"{:.0f}".format(None)
Producción :
#Python 3.x
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-89103a1332e2> in <module>()
----> 1 '{:.0f}'.format(None)
TypeError: unsupported format string passed to NoneType.__format__
La solución es pasar un tipo de datos válido en lugar de Ninguno
.
Código de ejemplo:
# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)
Producción :
#Python 3.x
b'delftstack'
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python