Python: формат выходной строки, выравнивание по правому краю
я обрабатываю текстовый файл, содержащий координаты x, y, z
1 128 1298039
123388 0 2
....
каждая строка разделена на 3 элемента с помощью
words = line.split()
после обработки данных мне нужно записать координаты обратно в другой txt-файл, чтобы элементы в каждом столбце были выровнены вправо (а также входной файл). Каждая строка состоит из координат
line_new = words[0] + ' ' + words[1] + ' ' words[2].
есть ли какой-нибудь манипулятор, как std::setw()
etc. в C++ позволяет задать ширину и выравнивание?
5 ответов:
попробуйте этот подход, используя новые
str.format
синтаксис:line_new = '{:>12} {:>12} {:>12}'.format(word[0], word[1], word[2])
и вот как это сделать с помощью старого
%
синтаксис (для старых версий Python, которые не поддерживаютstr.format
):line_new = '%12s %12s %12s' % (word[0], word[1], word[2])
вы можете выровнять его так:
print('{:>8} {:>8} {:>8}'.format(*words))
здесь
>
значит "выровнять по правой" и8
- это ширина для конкретного значения.и вот доказательство:
>>> for line in [[1, 128, 1298039], [123388, 0, 2]]: print('{:>8} {:>8} {:>8}'.format(*line)) 1 128 1298039 123388 0 2
Ps.
*line
означаетline
список будет распакован, так что.format(*line)
работает аналогично.format(line[0], line[1], line[2])
(еслиline
список с тремя элементами).
Это может быть достигнуто с помощью
rjust
:line_new = word[0].rjust(10) + word[1].rjust(10) + word[2].rjust(10)
простая таблица вывода:
a = 0.3333333 b = 200/3 print("variable a variable b") print("%10.2f %10.2f" % (a, b))
выход:
variable a variable b 0.33 66.67
%10.2 f: 10-Минимальная длина и 2-Количество десятичных знаков.