Przetwarzam plik tekstowy zawierający współrzędne x, y, z
1 128 1298039
123388 0 2
....
każda linia jest podzielona na 3 elementy za pomocą
words = line.split()
Po przetworzeniu danych muszę zapisać współrzędne z powrotem w innym pliku txt, tak aby elementy w każdej kolumnie były wyrównane do prawej (podobnie jak plik wejściowy). Każda linia składa się ze współrzędnych
line_new = words[0] + ' ' + words[1] + ' ' words[2].
Czy std::setw()
w C ++ jest jakiś manipulator, taki jak itp., Który pozwala ustawić szerokość i wyrównanie?
python
alignment
string-formatting
justik
źródło
źródło
Można to osiągnąć stosując
rjust
:źródło
Możesz to wyrównać w ten sposób:
gdzie
>
oznacza „ wyrównaj do prawej ” i8
jest szerokością określonej wartości.A oto dowód:
Ps.
*line
oznacza, żeline
lista zostanie rozpakowana, więc.format(*line)
działa podobnie do.format(line[0], line[1], line[2])
(zakładając, żeline
jest to lista zawierająca tylko trzy elementy).źródło
Bardzo podoba mi się nowa dosłowna interpolacja ciągów znaków w Pythonie 3.6+:
Odniesienie: PEP 498 - Interpolacja dosłownych ciągów znaków
źródło
Oto inny sposób formatowania przy użyciu formatu „f-string”:
Zapewni to następujące dane wyjściowe:
To, co tutaj robisz, to mówisz, że pierwsza kolumna ma 15 znaków i jest wyrównana do lewej, a druga kolumna (wartości) ma długość 10 znaków i jest wyrównana do prawej.
źródło
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
Chciałbym osiągnąć coś takiego jak powyżej.f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"
Prosta tabela wyników:
wynik:
% 10.2f: 10 to minimalna długość, a 2 to liczba miejsc dziesiętnych.
źródło
Aby to zrobić używając f-string i kontrolując liczbę końcowych cyfr:
źródło