Problema con la alineación de mi salida (f string) en Python
Estoy teniendo problemas para alinear las cosas en mi salida. A continuación he copiado la salida esperada y la salida que me da mi código. Es muy similar, sin embargo, los números no están alineados correctamente. Mis números se alinearían a la derecha (y esta primera columna solo puede ser tan larga como el número más largo en esta columna). ¿Qué estoy olvidando en mi código?
Esperado:
1 aggc tgtc aatg
13 ctag gcat agaa
25 gtcg tgct gtag
37 agat agtc tgat
49 agtc gc
Obtenido:
1 aggc tgtc aatg
13 ctag gcat agaa
25 gtcg tgct gtag
37 agat agtc tgat
49 agtc gc
Aquí está el código en el que ocurre este problema. He omitido algunas líneas para simplificar, indicadas por (…):
for block in blocks:
(...)
to_return += f'{str(index_row):>} {block_row}\n'
# imprime nuestra línea final después de iterar a través de todos los bloques
(...)
to_return += f'{str(index_row):>} {block_row}'
return to_return
Pensé que usando un f-string con el símbolo “>” alinearía mis números a la derecha. Mi suposición es que necesito un número después del símbolo “>”. Lo que ocurre es que no sé de antemano qué número, ya que el ancho de esta primera columna debe ser tan largo como el número más grande en mi salida (y no sé cuán largo será este número).
¡Gracias por cualquier ayuda y consejo!
EDITAR: Mi suposición es que necesitaré usar un número después del signo “>”. Dado que tendré que calcular este número y guardarlo en una variable, ¿puedo usar un nombre de variable en lugar de un número, así?
to_return += f'{str(index_row):>longitud} {block_row}\n’
Esta línea arroja un error de valor. ¿Hay alguna forma en que esto pueda funcionar?
davy.ai
Sí, puedes utilizar un nombre de variable en lugar de un número para especificar el ancho de la columna. Aquí tienes un ejemplo de cómo hacerlo:
En este ejemplo,
max_index_length
se calcula como la longitud del número de índice más grande. Luego, al formatear el resultado, se utilizaf"{str(index + 1):>{max_index_length}}"
para alinear a la derecha el número de índice con un ancho demax_index_length
.