如何在python中沿小数点对齐正负值

use*_*989 6 python python-2.7

我想将一堆正值和负值写入文本文件,如下所示

1      12.203026     2.291063     -0.061603
1      -0.736147     1.353548     -1.347932
6       0.728048     1.348907      0.247566
6      -0.728048     1.348907    -10.247565
1      10.736147     1.353547      1.347932
1      -1.203026    12.291063      0.061604
6      11.583889     0.179143    -10.258947
Run Code Online (Sandbox Code Playgroud)

当我写作时,它应该如上所述沿小数点对齐.我使用以下f.write()命令编写的代码,如下所示.

 f.write('%s    %2.6f   %2.6f   %2.6f\n' % (a, x, y, z ))
Run Code Online (Sandbox Code Playgroud)

出去

1      12.203026    2.291063    -0.061603
1      -0.736147    1.353548    -1.347932
6      0.728048     1.348907    0.247566
6      -0.728048    1.348907    -10.247565
1      10.736147    1.353547    1.347932
1      -1.203026    12.291063    0.061604
6      11.583889    0.179143    -10.258947
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 9

格式中的第一个数字是字符总数,而不是小数点前的数字.当该数字太小时,它会通过丢弃所有填充来补偿.要得到你想要的东西,你需要使用%10.6f,而不是%2.6f.这是1 -,初始数字为2,小数点为1,小数点后6位数 - 1 + 2 + 1 + 6 = 10.