Métodos para rellenar con ceros en Python | Uso de zfill(), format() y f-strings explicado a fondo

目次

1. Introducción

En Python, al formatear números o cadenas de texto, es común realizar un «relleno con ceros (zero padding)». Al utilizar el relleno con ceros, se puede uniformar el número de dígitos de los datos numéricos o alinear los formatos. Por ejemplo, al expresar el número «5» como «005», se puede mejorar la visibilidad de los datos o adaptarlos a un formato específico.

En este artículo, explicaremos varios métodos para realizar el relleno con ceros en Python, y detallaremos sus usos y puntos de atención. Para que sea fácil de entender incluso para principiantes, introduciremos desde métodos básicos hasta ejemplos avanzados, así que por favor léalo hasta el final.

1.1 ¿Qué es el relleno con ceros?

El relleno con ceros se refiere al proceso de agregar «0» al frente cuando no alcanza un número de dígitos específico para uniformar los dígitos. Por ejemplo, se usa en casos como los siguientes.

  • Uniformar números a un número fijo de dígitos (ej: 7 → 007)
  • Uniformar formatos de nombres de archivos o datos (ej: image1.pngimage001.png)
  • Uniformar la notación de fechas o horas (ej: 3:503:05)

Python proporciona varios métodos para realizar el relleno con ceros, y es importante seleccionar el método adecuado según el uso.

1.2 Escenarios donde se necesita el relleno con ceros en Python

En Python, los escenarios donde se necesita el relleno con ceros incluyen casos como los siguientes.

1.2.1 Al formatear datos numéricos

  • Para uniformar IDs o códigos (números de productos, números de miembros, etc.)
  • Para output de números con un número fijo de dígitos

1.2.2 Formateo de nombres de archivos o datos

  • Uniformar números de archivos de imágenes o archivos de log
  • Para que se ordenen correctamente al sortear (ej: file1file001)

1.2.3 Formateo de datos de tiempo o fecha

  • Realizar relleno con ceros al output de fechas usando objetos datetime
  • Mantener la notación de 2 dígitos (ej: 2024-3-5 → 2024-03-05)

1.2.4 Formato de salida del programa

  • Uniformar formatos de visualización en pantalla o logs
  • Alinear la visualización de números en la UI para hacerla más legible

1.3 Estructura de este artículo

En este artículo, explicaremos varios métodos para realizar el relleno con ceros en Python en el siguiente orden.

  1. Relleno con ceros en Python: métodos recomendados
  • Métodos de uso específicos de zfill(), rjust(), format(), etc.
  1. Puntos de atención al realizar relleno con ceros
  • Diferencias entre zfill() y rjust() y comparación de rendimiento
  1. Ejemplos de uso de relleno con ceros útiles en el trabajo práctico
  • Datos numéricos, datos de fecha y hora, comparación con otros lenguajes, etc.
  1. Preguntas frecuentes sobre relleno con ceros (FAQ)
  • Errores comunes y sus métodos de resolución
  1. Resumen
  • Cómo distinguir entre cada técnica y cómo elegir el método óptimo

2. Relleno con ceros en Python: métodos recomendados

Python tiene varios métodos para realizar relleno con ceros, pero es importante seleccionar el método adecuado según el contexto de uso o el tipo de datos. En esta sección, explicamos en detalle tres métodos principales: zfill(), rjust() y format() (así como las f-strings).

2.1 Relleno con ceros usando zfill() (el método más simple)

zfill() es uno de los métodos de cadena en Python que agrega 0 al lado izquierdo hasta alcanzar el número de dígitos especificado. Es uno de los métodos más sencillos para realizar relleno con ceros.

Sintaxis básica

cadena.zfill(dígitos)

Ejemplo de uso

num = "5"
print(num.zfill(3))  # Salida: 005

num2 = "123"
print(num2.zfill(5))  # Salida: 00123

Ejemplo con números con signo

num = "-5"
print(num.zfill(4))  # Salida: -005

Ventajas

  • Permite realizar relleno con ceros de manera sencilla
  • Mantiene los signos - y +
  • Es intuitivo de usar

Desventajas

  • No se puede aplicar directamente a números (se necesita conversión a cadena)

2.2 Relleno con ceros usando rjust() (un método más versátil)

rjust() es un método que rellena el lado izquierdo con un carácter arbitrario hasta alcanzar el número de dígitos especificado. Se puede usar no solo para relleno con ceros, sino también para otros fines.

Sintaxis básica

cadena.rjust(dígitos, carácter_de_relleno)

Ejemplo de uso

num = "5"
print(num.rjust(3, "0"))  # Salida: 005

Ventajas

  • Es más versátil que zfill() (se pueden usar caracteres distintos de 0)
  • Permite formatear cadenas que no son números

Desventajas

  • No se puede aplicar directamente a números (se necesita conversión a cadena)

2.3 Relleno con ceros usando format() y f-strings

Usando el método format() de Python o las f-strings, es posible realizar un relleno con ceros más flexible.

Método usando format()

"{:0N}".format(número)

(N es el número de dígitos)

Ejemplo de uso

num = 5
print("{:03}".format(num))  # Salida: 005

Método usando f-strings

f"{variable:0N}"

Ejemplo de uso

num = 7
print(f"{num:03}")  # Salida: 007

Ventajas

  • Se puede usar directamente con tipos numéricos
  • Permite un formateo flexible
  • Las f-strings mejoran la legibilidad

Desventajas

  • Las f-strings no están disponibles en Python 3.6 o versiones anteriores (se necesita usar format())

2.4 ¿Cuál método usar? (tabla de comparación)

MétodoObjeto de aplicaciónCompatibilidad directa con númerosCompatibilidad con números con signoRelleno con carácter arbitrario
zfill()Cadena
rjust()Cadena
format()Número/cadena
f-stringsNúmero/cadena

2.5 Resumen

Existen varios métodos para realizar relleno con ceros en Python, pero es importante seleccionar el adecuado según el uso.

  • Relleno con ceros simplezfill()
  • Desea rellenar con caracteres distintos de cerorjust()
  • Desea relleno con ceros en tipos numéricosformat() o f-strings
  • Desea alinear también los dígitos después del punto decimalformat() o f-strings
侍エンジニア塾

3. Precauciones al realizar el relleno con ceros

Existen varios métodos para realizar el relleno con ceros en Python, pero si no se usan adecuadamente, pueden ocurrir comportamientos inesperados o errores. En esta sección, explicamos en detalle las precauciones al usar el relleno con ceros.

3.1 zfill() no se puede aplicar directamente a números

zfill() es un método exclusivo para cadenas, por lo que aplicar directamente a un número causa un error.

Ejemplo de uso incorrecto

num = 5
print(num.zfill(3))  # Error: AttributeError: 'int' object has no attribute 'zfill'

Ejemplo de uso correcto (convertir a cadena)

num = 5
print(str(num).zfill(3))  # Salida: 005

Para rellenar con ceros un número, lo mejor es usar format() o cadenas f.

3.2 Manejo de números con signo en zfill()

Al usar zfill(), para números negativos, el signo se mantiene al principio y los ceros se agregan después.

num = "-7"
print(num.zfill(4))  # Salida: -007

Para realizar relleno con ceros en números con signo, es necesario usar format() o cadenas f y procesar el signo manualmente.

3.3 Diferencia con rjust()

rjust() puede rellenar con caracteres distintos de cero, pero como no considera el signo, no es adecuado para rellenar con ceros números con signo.

num = "-5"
print(num.rjust(4, "0"))  # Salida: 00-5  (comportamiento inesperado)

Para realizar relleno con ceros en números con signo, se debe usar zfill() o format().

3.4 Precauciones al rellenar con ceros usando format() o cadenas f

Al usar format() o cadenas f, si no se especifica el formato adecuado, se pueden obtener resultados inesperados.

Relleno con ceros en enteros

num = 5
print(f"{num:03}")  # Salida: 005

En caso de incluir punto decimal

num = 3.5
print(f"{num:06.2f}")  # Salida: 003.50

En caso de incluir punto decimal, es importante especificar también el número de dígitos después del punto decimal.

3.5 Diferencias de rendimiento

Al procesar grandes cantidades de datos, el rendimiento varía según el método utilizado.

MétodoObjeto de aplicaciónRendimiento
zfill()cadenarápido
rjust()cadenarápido
format()número/cadenarápido
cadenas fnúmero/cadenael más rápido

En particular, al procesar grandes cantidades de datos, se recomienda el uso de cadenas f.

Para procesar grandes cantidades de datos, las cadenas f (f"{num:03}") son óptimas.

3.6 Diferencias según el SO o la versión de Python

Algunas funciones de formato (como strftime()) pueden tener comportamientos diferentes según el SO.

from datetime import datetime

now = datetime(2024, 3, 5, 7, 8)
print(now.strftime("%Y-%m-%d %H:%M"))  # Salida: 2024-03-05 07:08

Al usar el relleno con ceros incorporado de Python, es necesario prestar atención a las diferencias por SO.

3.7 Resumen

zfill() es exclusivo para cadenas y es compatible con números con signo, pero no se puede aplicar directamente a números
rjust() puede rellenar con caracteres distintos de cero, pero no es adecuado para números con signo
format() y las cadenas f se pueden aplicar directamente a tipos numéricos, son las más flexibles y de mayor rendimiento
✅ Al realizar relleno con ceros después del punto decimal, especificar también el número de dígitos después del punto decimal
✅ Al procesar grandes cantidades de datos, las cadenas f son las más rápidas
✅ El relleno con ceros de strftime() puede variar según el SO

4. Ejemplos de uso de relleno con ceros útiles en el trabajo práctico

El relleno con ceros en Python se utiliza ampliamente en la programación cotidiana y en sistemas empresariales. En esta sección, introducimos ejemplos específicos útiles en el trabajo práctico.

4.1 Relleno con ceros de datos numéricos (números de miembro, códigos de productos, etc.)

En bases de datos o sistemas de gestión, es común realizar relleno con ceros para alinear ID o códigos de productos a un número fijo de dígitos.

4.1.1 Ejemplo: Formato de número de miembro

member_id = "123"
formatted_id = member_id.zfill(5)
print(formatted_id)  # Salida: 00123

4.1.2 Ejemplo: Unificación de código de producto

product_id = 42
formatted_code = f"{product_id:05}"
print(formatted_code)  # Salida: 00042

Utilice relleno con ceros para ID o códigos a fin de mantener la consistencia.
zfill() es para cadenas, format() se puede aplicar también a números.

4.2 Relleno con ceros de datos de fecha y hora (combinación con datetime)

También es común realizar relleno con ceros en datos de fecha y hora para generar un formato unificado.

4.2.1 Relleno con ceros usando strftime()

from datetime import datetime

now = datetime(2024, 3, 5, 7, 8)
formatted_date = now.strftime("%Y-%m-%d %H:%M")
print(formatted_date)  # Salida: 2024-03-05 07:08

Con strftime(), es posible obtener automáticamente fechas y horas con relleno con ceros.

4.2.2 Relleno con ceros manual con cadenas f

day = 5
month = 3
formatted_date = f"{2024}-{month:02}-{day:02}"
print(formatted_date)  # Salida: 2024-03-05

Usando f"{variable:02}", es posible realizar relleno con ceros manual.

4.3 Diferencia entre relleno con ceros y relleno con espacios

En lugar de relleno con ceros, hay casos en los que se desea alinear dígitos con espacios. Por ejemplo, se utiliza en el formateo de recibos o formularios.

4.3.1 Relleno con espacios usando rjust()

text = "123"
formatted_text = text.rjust(5)
print(f"'{formatted_text}'")  # Salida: '  123'

zfill() rellena con 0, mientras que rjust() rellena con espacios en blanco.

4.4 Comparación del relleno con ceros en otros lenguajes (C, Java) y Python

Al comparar los métodos de relleno con ceros en Python y otros lenguajes de programación, destaca la flexibilidad de format() y las cadenas f en Python.

4.4.1 Caso de C

#include 

int main() {
    int num = 7;
    printf("%03dn", num);  // Salida: 007
    return 0;
}

En C, es posible realizar relleno con ceros usando el especificador de formato %03d.

4.4.2 Caso de Java

public class Main {
    public static void main(String[] args) {
        int num = 7;
        System.out.printf("%03dn", num);  // Salida: 007
    }
}

En Java, usando printf("%03d"), es posible realizar un relleno con ceros similar al de Python.

Ventajas de Python

  • format() y las cadenas f permiten una descripción más intuitiva
  • zfill() y rjust(), entre otros, ofrecen métodos ricos para operaciones de cadenas

4.5 Resumen

El relleno con ceros en Python es especialmente útil en formateo de datos, procesamiento de formatos y gestión de fechas y horas.

Relleno con ceros de números de miembro o códigos de productos

  • Usar adecuadamente zfill() (para cadenas) y format() (para números)

Relleno con ceros de datos de fecha y hora

  • Obtener fechas y horas formateadas con strftime()
  • Es posible relleno con ceros manual con f"{variable:02}"

Diferencia entre relleno con ceros y relleno con espacios

  • zfill() agrega ceros, rjust() agrega espacios en blanco

El relleno con ceros en Python es simple y flexible en comparación con otros lenguajes

  • Usando format() o cadenas f, es posible realizar relleno con ceros de manera intuitiva
年収訴求

5. Preguntas frecuentes sobre el relleno con ceros (FAQ)

En cuanto al relleno con ceros en Python, muchos programadores tienen dudas comunes. En esta sección, seleccionamos preguntas frecuentes y explicamos detalladamente cada respuesta.

5.1 zfill() y rjust() ¿cuál es la diferencia?

Pregunta:
¿Cuál es la diferencia entre zfill() y rjust()? ¿Cuál se debe usar?

Respuesta:
Tanto zfill() como rjust() se pueden usar para alinear cadenas a una longitud especificada, pero difieren en los siguientes puntos.

MétodoCarácter de rellenoAplicación a númerosPreservación de signo
zfill()0 solamente✕ (solo cadenas)○ (mantiene el signo al principio)
rjust()Cualquier carácter✕ (solo cadenas)✕ (no considera el signo)

Ejemplo

num = "-5"

print(num.zfill(4))  # Salida: -005
print(num.rjust(4, "0"))  # Salida: 00-5 (la posición del signo cambia)

Para rellenar con ceros números con signo, se debe usar zfill().
Si se desea rellenar con un carácter diferente de cero, usar rjust().

5.2 ¿Es obligatoria la conversión a cadena al rellenar números con ceros?

Pregunta:
¿Es necesario convertir a cadena con str() los datos de tipo numérico al rellenar con ceros?

Respuesta:
Los métodos zfill() y rjust() de Python son métodos de cadena, por lo que no se pueden aplicar directamente a tipos numéricos (int o float). Por eso, es necesario convertir con str().

Ejemplo (caso en que se necesita conversión a cadena)

num = 7
print(str(num).zfill(3))  # Salida: 007

Sin embargo, usando format() o cadenas f, es posible rellenar con ceros directamente desde el número.

Ejemplo (sin necesidad de conversión a cadena)

num = 7
print(f"{num:03}")  # Salida: 007

Para rellenar números con ceros, format() o las cadenas f son lo óptimo.

5.3 ¿Cómo rellenar con ceros un objeto datetime?

Pregunta:
¿Cuál es el método para mostrar un objeto datetime de Python con relleno de ceros?

Respuesta:
Usando datetime.strftime(), se puede obtener automáticamente la fecha y hora con relleno de ceros.

Ejemplo

from datetime import datetime

now = datetime(2024, 3, 5, 7, 8)
print(now.strftime("%Y-%m-%d %H:%M"))  # Salida: 2024-03-05 07:08

También es posible rellenar con ceros manualmente usando cadenas f.

Ejemplo

year, month, day = 2024, 3, 5
formatted_date = f"{year}-{month:02}-{day:02}"
print(formatted_date)  # Salida: 2024-03-05

Para rellenar fechas con ceros, strftime() es conveniente.

5.4 Causas de errores y métodos de resolución (errores al rellenar con ceros)

Pregunta:
A veces ocurre un error al intentar rellenar con ceros. ¿Cuáles son las causas posibles?

Respuesta:
A continuación, se resumen los errores comunes, sus causas y métodos de resolución.

Contenido del errorCausaMétodo de resolución
AttributeError: 'int' object has no attribute 'zfill'zfill() es solo para cadenasstr() para convertir o usar format()
TypeError: non-empty format string passed to object.__format__format() usado con None o listConvertir a int y aplicar format()
ValueError: Unknown format code 'd' for object of type 'str'format() recibe una cadenaConvertir a int y luego aplicar format()

Ejemplo: Método de resolución de errores

# Caso en que ocurre el error
num = 7
# print(num.zfill(3))  # Ocurre error

# Método de corrección
print(str(num).zfill(3))  # Salida: 007
print(f"{num:03}")  # Salida: 007

Si ocurre un error, es importante verificar el tipo de datos (int / str).

5.5 Resumen

zfill() es adecuado para rellenar con ceros números con signo
✅ Para rellenar números con ceros, format() o cadenas f son lo óptimo
✅ Para rellenar con ceros datetime, usar strftime()
f"{num:03}" es el método de relleno con ceros más rápido

6. Resumen

En este artículo, hemos explicado en detalle los métodos de relleno con ceros en Python. El relleno con ceros es un proceso importante para uniformar el formato de números o cadenas, mejorando la legibilidad y consistencia de los datos. Finalmente, repasaremos los puntos clave del artículo y organizaremos los métodos de relleno con ceros adecuados según la situación.

6.1 Comparación de métodos de relleno con ceros en Python

Python tiene varios métodos de relleno con ceros, cada uno con usos adecuados.

MétodoCaracterísticasObjeto de aplicaciónAplicable a númerosCompatible con números con signoRelleno con caracteres arbitrarios
zfill()Relleno con ceros de cadenasCadena✕ (se necesita conversión a cadena)
rjust()Alineación a la derecha con rellenoCadena✕ (se necesita conversión a cadena)
format()Especificación de formato posibleCadena/número
Cadenas fAlta legibilidad y velocidadCadena/número

Para rellenar con ceros números, format() o las cadenas f son óptimas
Para relleno con ceros con signo, zfill() es conveniente
Si se desea rellenar con caracteres distintos de cero, usar rjust()

6.2 Repaso de ejemplos de uso específicos

El relleno con ceros en Python se utiliza en diversos escenarios en el trabajo práctico.

Relleno con ceros de números de miembro o códigos de producto

product_id = 42
formatted_code = f"{product_id:05}"
print(formatted_code)  # Salida: 00042

Formato de datos de fecha y hora

from datetime import datetime

now = datetime(2024, 3, 5, 7, 8)
formatted_date = now.strftime("%Y-%m-%d %H:%M")
print(formatted_date)  # Salida: 2024-03-05 07:08

Medidas contra errores

num = 7
# print(num.zfill(3))  # Error
print(str(num).zfill(3))  # Salida: 007
print(f"{num:03}")  # Salida: 007

6.3 Desde el punto de vista del rendimiento

Al procesar grandes volúmenes de datos, el método de relleno con ceros afecta el rendimiento.

Tiempo de procesamiento de relleno con ceros 100.000 veces (cuanto más corto, más rápido)

MétodoTiempo de ejecución
zfill()0.018 sec
format()0.016 sec
Cadenas f0.012 sec (el más rápido)

Para relleno con ceros de grandes volúmenes de datos, se recomienda cadenas f
zfill() es intuitivo de usar, pero en términos de rendimiento, format() y las cadenas f son superiores

6.4 Conclusión: El método de relleno con ceros óptimo según la situación

En el relleno con ceros en Python, es importante seleccionar el método adecuado según el uso.

🔹 Método simple para principianteszfill()
🔹 Para relleno con ceros de númerosformat() o cadenas f
🔹 Para manejar números con signozfill()
🔹 Para rellenar con caracteres distintos de cerorjust()
🔹 Para procesar grandes volúmenes de datos → cadenas f (el más rápido)

Utilice este artículo como referencia para aplicar adecuadamente el relleno con ceros en Python y formatear los datos de manera eficiente.

年収訴求