Formato de la consola de salida

Tengo problemas para hacer que Python imprima los textos correctamente alineados. He intentado todo lo que sabía, pero aún así el mismo resultado y es muy molesto !.

Esto es lo que estoy metiendo en la consola. introduzca la descripción de la imagen aquí

Aquí está el código que tengo.

print " FileName\t\t\t\t\tStatus\t\tBinary Type\n" for files in PASS: log = subprocess.check_output(['dumpbin','/HEADERS',files]) if arch64 in log: print" %s \t\t\t\tPASSED\t\t 64-bit \t\t " %files elif arch32 in log: print" %s \t\t\t\tPASSED\t\t 32-bit \t\t " %files print"\n" for files in FAILED: print" %s \t\t\t\t FAILED \t\t " %files print "\n\n 

    Use %45s para hacer un campo justificado a la derecha que tenga 45 caracteres. Y use %-45s para hacer una cadena justificada a la izquierda. También considere extraer su línea imprimiendo en una función, de esa manera podrá cambiarla fácilmente en un solo lugar. Me gusta esto:

     # fake setup PASS = ["foo.exe", "bar.exe", "really_long_filename.exe"] FAILED = ["failed.exe"] types = ["32-bit", "64-bit", "64-bit"] arch64 = '64' arch32 = '32' # your code def print_row(filename, status, file_type): print " %-45s %-15s %15s" % (filename, status, file_type) print_row('FileName', 'Status', 'Binary Type') for files in PASS: log = types.pop() if arch64 in log: print_row(files, 'PASSED', '64-bit') elif arch32 in log: print_row(files, 'PASSED', '32-bit') print"\n" for files in FAILED: print_row(files, 'FAILED', '') print "\n\n" 

    En lugar de las tabs, es mejor usar directivas de formato de cadena donde es posible especificar el número exacto de espacios y reservar para salida.

    Por ejemplo

     print '>>%20s<<' %('some string') >> some string<< 

    reservará 20 espacios y alineará a la derecha esta cadena para mostrar. Puede dejarlo -justificarlo usando %-20s

     print '>>%-20s<<' %('some string') >>some string << 

    Los números se pueden especificar utilizando d para enteros y f para valores flotantes. P.ej,

      print '%03d %5.2f' %(5, 22/7.0) 005 3.14 

    En este ejemplo, reservé 3 espacios con cero para un valor entero y 5 espacios para un flotante (2 para los valores después del espacio decimal). Puedes controlar la alineación aquí también con - . Hay muchas otras opciones para formatear la salida, consulte los enlaces sugeridos a continuación para obtener más detalles.

    Tenga en cuenta que se recomienda el uso de la función .format() . Vea SO mi respuesta aquí sobre cómo usar .format() . Esta respuesta también puede ayudar.

    Si bien el .format puede parecer muy detallado, ofrece una gran flexibilidad y una de mis características favoritas es la capacidad de imprimir fácilmente comas en grandes cantidades para facilitar la lectura.

    Consulte la documentación de Python en Formateo de cadenas para obtener muchos más detalles que lo ayudarán a alinear su salida exactamente de la manera que le gustaría.

    Puede simplificarlo mucho si usa el formato de cadena con relleno , por ejemplo.

     >>> '%20s' % 'test' ' test' >>> '%-20s' % 'test' 'test ' 

    sugiero usar ljust con ellos algo como

     print files.ljust(20) + 'Passed'.ljust(5) + '64-bit' 

    en lugar de esto :

     print" %s \t\t\t\tPASSED\t\t 64-bit \t\t " %files 

    Podría usar un módulo de terceros para formatear la salida a la consola.

    es decir: tabla de texto