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
