Estoy procesando un archivo de texto que contiene las coordenadas x, y, z
1 128 1298039
123388 0 2
....
cada línea se delimita en 3 elementos usando
words = line.split()
Después de procesar los datos, necesito escribir las coordenadas en otro archivo txt para que los elementos de cada columna estén alineados a la derecha (así como el archivo de entrada). Cada línea está compuesta de las coordenadas.
line_new = words[0] + ' ' + words[1] + ' ' words[2].
¿Hay algún manipulador como std::setw()
etc. en C ++ que permita establecer el ancho y la alineación?
python
alignment
string-formatting
justik
fuente
fuente
Se puede lograr mediante el uso de
rjust
:fuente
Puedes alinearlo así:
donde
>
significa " alinear a la derecha " y8
es el ancho de un valor específico.Y aquí hay una prueba:
PD.
*line
significa que laline
lista se desempaquetará, por lo que.format(*line)
funciona de manera similar a.format(line[0], line[1], line[2])
(suponiendo queline
sea una lista con solo tres elementos).fuente
Realmente disfruto de una nueva interpolación literal de cadenas en Python 3.6+:
Referencia: PEP 498 - Interpolación de cadenas literales
fuente
Aquí hay otra forma de cómo puede formatear usando el formato 'f-string':
Esto proporcionará el siguiente resultado:
Lo que está haciendo aquí es decir que la primera columna tiene 15 caracteres de longitud y está justificada a la izquierda y la segunda columna (valores) tiene 10 caracteres de longitud y está justificada a la derecha.
fuente
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
Me gustaría lograr algo como el anterior.f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"
Tabulación simple de la salida:
salida:
% 10.2f: 10 es la longitud mínima y 2 es el número de decimales.
fuente
Para hacerlo usando f-string y con control del número de dígitos finales:
fuente