Estoy tratando de imprimir una cadena con dos de las columnas fijas. Por ejemplo, me gustaría ser capaz de imprimir:

abc       xyz
abcde     xyz
a         xyz

¿Cuál es la forma correcta para dar formato a la cadena de salida cuando la impresión para lograr esto? También, ¿cómo se hace antes de la versión 2.6 y después de la versión 2.6?

OriginalEl autor Victor Brunell | 2016-02-06

4 Comentarios

  1. 13

    Puede utilizar el formato y la mención revisión de los espacios entre las columnas

    '{0:10}  {1}'.format(s1, s2)

    Estilo antiguo formato

    '%-10s' '%s' % (s1,s2)
    ¿Cómo podría esto ser hecho antes de la versión 2.6?
    De Estilo antiguo, – ‘%- 10s’ ‘%s’ % (s1,s2), Pero no estoy seguro de la edad de la
    Bueno! Que funciona a la perfección. ¿Por qué la segunda cadena de recibir el ajuste de formato en la primera cadena? Yo creo que debe ser "%s %-10s", pero eso está mal.
    Lo que yo entiendo ‘%-10s’ significa alineado a la izquierda con un máximo de 10 espacios a la derecha. Me refiero pyformat.info
    esto funciona muy bien y también es limpio y sencillo! gracias!

    OriginalEl autor AlokThakur

  2. 1

    Esto debería funcionar para todas las longitudes de los elementos (asumiendo que son las cadenas. Esto supone que los datos están en dos listas separadas first y second.

    maxlen = len(max(first, key=len))
    
    for i,j in zip(first, second):
        print "%s\t%s" % (i.ljust(maxlen, " "), j)

    Esto funciona en Python 2.x, antes y después de la 2.6.

    Solución agradable. Esto todavía no me permite colocar la segunda columna exactamente 20 espacios desde el inicio de la cadena cada vez, sin embargo, ¿correcto?
    Seguro que, haciendo caso omiso de la primera línea y la sustitución de maxlen con 20.
    Ah, gracias. Voy a darle una oportunidad.

    OriginalEl autor L3viathan

  3. 1

    Antes de >=python3.6

    s1='albha'
    s2='beta'
    
    f'{s1}{s2:>10}'
    
    #output
    'albha      beta'

    OriginalEl autor Roushan

  4. 0

    Hay un número de maneras de hacer esto y esto depende de cómo se almacenan los datos. Assumining sus datos se almacenan en la misma longitud de las listas:

    for i in range(len(list1)):
        print(“%3i\t%3i %(list1[i],list2[i]))

    Esto va a funcionar en todas las versiones de python. El 3i asegura que la salida tiene una anchura de campo de 3 caracteres

    No se que producir un mal alineados salida? La segunda columna no estaría en una posición fija si el primer %d cambios de longitud. Simplemente sería una pestaña fuera de el último carácter.
    Tienes razón he corregido la respuesta a mostrar relleno de 3 caracteres
    Hay alguna manera para que se produzca la segunda %i 20 espacios desde el inicio de la cadena? Es decir, no en relación a la primera %i, pero en relación con el comienzo de la cadena de sí mismo?
    Creo que quiere que el .formato método de docs.python.org/2/library/string.html para su uso en cadenas.
    Sí, yo estaba solo con la esperanza de encontrar algún método para hacer esto antes de la versión 2.6. Estoy trabajando en un servidor que sólo es compatible con la versión 2.4.

    OriginalEl autor BenJ

Dejar respuesta

Please enter your comment!
Please enter your name here