python中的输出对齐问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的输出对齐问题相关的知识,希望对你有一定的参考价值。

如图所示:

在输出的结果中,第3列对齐,而最后一列却没有对齐,这是为什么?
不明白,求大神解答!!

参考技术A
>>> velocities = [0.0, 9.81, 19.62, 29.43]
>>> fmt = 'Metric: %5.2f m/sec; Imperial: %8.4f ft/sec'
>>> for v in velocities:
...     print fmt % (v, v*3.28)
... 
Metric:  0.00 m/sec; Imperial:   0.0000 ft/sec
Metric:  9.81 m/sec; Imperial:  32.1768 ft/sec
Metric: 19.62 m/sec; Imperial:  64.3536 ft/sec
Metric: 29.43 m/sec; Imperial:  96.5304 ft/sec
>>>

do you like this?

 

追问

格式化字符串的时候,取值有什么讲究吗?
比如:您用的是%5.2f 和%8.4f,但是换用其他的,如%4.2f和%7.4f,就不能完全对齐了,这是怎么回事?

大神,您用的是什么编辑器啊,感觉挺好用的。方便透露吗?

追答

     python的格式化参数和c的格式化参数是一样的。小数点前面的数字表示该参数所占基本位长,若参数长于该值则保持参数本身的长度,这样当你的数据超过参数约定的4位或7位时就对不齐了--这个位长的取值是由编码者按数据情况及输出要求来设置的。

    你在上面看到的是从python的命令行复制粘贴的效果;我通常喜欢用"scite"编写代码,然后直接按<F5>键运行调试(我常开发的是基于命令行的应用)。另一个让我喜欢的编辑器是"sublime_text2"--太性感了 :)

本回答被提问者和网友采纳
参考技术B 一个“\t"是8个字符的宽度,后面的数字如32.1768加上空格等已超出了8个字符的宽度,
只能往后放了。追问

像这样该如何修改,使其能正好对齐

追答

使用”字符串格式化“,例如:

print "Metric: %06.2f  m/sec;  Imperial: %06.2f  ft/sec" % (v,b)

Python中print函数输出时的左右对齐问题

为了将print函数输出的内容对齐,笔者在http://www.jb51.net/article/55768.htm中找到了左右对齐的方法。整理如下:

一、数值类型(int、float)

#  %d、%f是占位符
>>> a = 3.1415926
>>> print("%d"%a)    #%d只能输出整数,int类
3
>>> print("%f"%a)  #%f输出浮点数
3.141593
>>> print("%.2f"%a) #按照要求输出小数位数
3.14
>>> print("%.9f"%a)  #如果要求的小数位数过多,后面就用0补全
3.141592600

 


>>> b = 3         
>>> print("%4d"%b)            #如果是整数,这样写要求该整数占有四个位置,于是在前面增加三个空格
   3                                      #而不是写成0003的样式

 

>>> print("%06d"%int(a))   #整数部分的显示,要求共显示6位。如果整数不足6位,那么不足的位数在整数前面用0补足。
000003

>>> print(‘%06d‘%b)
000012

 

在实际编程中,我们常常需要写成a=xxx的样式,使输出界面更友好。所以笔者也copy了源原链接作者的一段代码,稍稍修改给出Python3的表达范式。

(1)右对齐

>>> print("PI=%10.3f"%a)     #约束一下,这个的含义是整数部分加上小数点和小数部分共计10位,并且右对齐
PI=     3.142

(2)左对齐
>>> print("PI=%-10.3f"%a)    #要求显示的左对齐,其余跟上面一样
PI=3.142

 

二、字符类型(str)

和数值类型类似,不过将%d、%f的占位符变为了%s的占位符。

以上是关于python中的输出对齐问题的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何控制右对齐输出?

Python二维列表,矩阵算式输出后格式的问题,请问这怎么把数字对齐?

是否可以将打印语句与 Python 中的中心对齐?

如何在 Python ttk 中的 Button 中对齐文本

Python中的人脸对齐与DNN人脸检测器

OLS回归python中的形状未对齐错误