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是小数位数。