Python:格式输出string,右alignment
我正在处理一个包含坐标x,y,z的文本文件
1 128 1298039 123388 0 2 ....
每一行都用3个项目分隔
words = line.split()
处理完数据之后,我需要将坐标写回到另一个txt文件中,以便每列中的项目都alignment(以及input文件)。 每一行都由坐标组成
line_new = words[0] + ' ' + words[1] + ' ' words[2].
有没有像std::setw()
等在C ++允许设置宽度和alignment的操纵器?
使用更新的str.format
语法来尝试这种方法:
line_new = '{:>12} {:>12} {:>12}'.format(word[0], word[1], word[2])
以下是如何使用旧的%
语法(对不支持str.format
较旧版本的Python有用):
line_new = '%12s %12s %12s' % (word[0], word[1], word[2])
你可以像这样alignment:
print('{:>8} {:>8} {:>8}'.format(*words))
其中>
表示“ alignment到右边 ”, 8
是特定值的宽度 。
这是一个certificate:
>>> 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.2f: 10是最小长度,2是小数位数。