Estou processando um arquivo de texto contendo as coordenadas x, y, z
1 128 1298039
123388 0 2
....
cada linha é delimitada em 3 itens usando
words = line.split()
Após o processamento dos dados, preciso gravar as coordenadas novamente em outro arquivo txt, para que os itens em cada coluna sejam alinhados à direita (assim como o arquivo de entrada). Cada linha é composta pelas coordenadas
line_new = words[0] + ' ' + words[1] + ' ' words[2].
Existe algum manipulador como o std::setw()
C ++ que permita definir a largura e o alinhamento?
python
alignment
string-formatting
justik
fonte
fonte
Isso pode ser alcançado usando
rjust
:fonte
Você pode alinhá-lo assim:
onde
>
significa " alinhar à direita " e8
é a largura do valor específico.E aqui está uma prova:
Ps.
*line
significa que aline
lista será descompactada, portanto,.format(*line)
funciona de maneira semelhante a.format(line[0], line[1], line[2])
(supondo queline
seja uma lista com apenas três elementos).fonte
Eu realmente gosto de uma nova interpolação de string literal no Python 3.6+:
Referência: PEP 498 - Interpolação de cordas literais
fonte
Aqui está outra maneira de como você pode formatar usando o formato 'f-string':
Isso fornecerá a seguinte saída:
O que você está fazendo aqui é que está dizendo que a primeira coluna tem 15 caracteres e é justificada à esquerda e a segunda coluna (valores) tem 10 caracteres e é justificada à direita.
fonte
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
Eu gostaria de alcançar sth como acima.f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"
Tabulação simples da saída:
resultado:
% 10.2f: 10 é o comprimento mínimo e 2 é o número de casas decimais.
fonte
Para fazer isso usando a string f e com o controle do número de dígitos à direita:
fonte