es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Embellecimiento de la salida impresa de la consola.

Tengo una salida en la consola. Desafortunadamente, los textos tienen diferentes longitudes y, por lo tanto, se ven muy desplazados. ¿Existe una opción que escriba los textos uno debajo del otro, sin importar cuántos caracteres haya delante de ellos, para que la salida se vea como quiero?

No me gustaría usar otra biblioteca para esto.

print(65 * '_')
print('algorithm\t\t\tsil\t\tdbs')

results = ['Agglomerative Clustering', 0.8665, 0.4200]
formatter_result = ("{:9s}\t\t{:.4f}\t{:.4f}")
print(formatter_result.format(*results))

results = ['k-Means', 0.9865, 0.1200]
formatter_result = ("{:9s}\t\t{:.4f}\t{:.4f}")
print(formatter_result.format(*results))

print(65 * '_')

Lo que tengo


algorithm sil dbs Agglomerative Clustering 0.8665 0.4200 k-Means 0.9865 0.1200

Lo que quiero


algorithm sil dbs Agglomerative Clustering 0.8665 0.4200 k-Means 0.9865 0.1200

He consultado https://stackoverflow.com/questions/9535954/printing-lists-as-tabular-data y lo he intentado, pero no me funciona

print(65 * '_')

heading = ['algorithm', 'sil', 'dbs']
result1 = ['Agglomerative Clustering', 0.8665, 0.4200]
result2 = ['k-Means', 0.9865, 0.1200]
ab = np.array([heading, result1, result2])
for row in ab:
    print("{: >20} {: >20} {: >20}".format(*row))

print(65 * '_')

algorithm sil dbs Agglomerative Clustering 0.8665 0.42 k-Means 0.9865 0.12
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para alinear correctamente la salida, podemos establecer el ancho de las columnas en la cadena formatter_result a un valor fijo usando el método str.ljust().

    Aquí hay un fragmento de código actualizado:

    print(65 * '_')
    
    print('algorithm'.ljust(30) + 'sil\t\t' + 'dbs')
    results =  ['Clustering Aglomerativo', 0.8665, 0.4200]
    formatter_result = ("{:30s}\t{:.4f}\t{:.4f}")
    print(formatter_result.format(*results))
    
    results = ['k-Means', 0.9865, 0.1200]
    formatter_result = ("{:30s}\t{:.4f}\t{:.4f}")
    print(formatter_result.format(*results))
    
    print(65 * '_')
    

    Salida:

    _________________________________________________________________
    algorithm                     sil               dbs
    Clustering Aglomerativo      0.8665         0.4200
    k-Means                      0.9865         0.1200
    _________________________________________________________________
    

    En esta solución, utilizamos el método ljust() para alinear a la izquierda la columna ‘algorithm’ a 30 caracteres. También añadimos pestañas entre las columnas ‘sil’ y ‘dbs’ para que la salida se vea ordenada. Finalmente, utilizamos la misma cadena formateadora para ambos conjuntos de resultados para asegurarnos de que las columnas siempre estén alineadas.

Comments are closed.