python中的输出对齐问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的输出对齐问题相关的知识,希望对你有一定的参考价值。
如图所示:
在输出的结果中,第3列对齐,而最后一列却没有对齐,这是为什么?
不明白,求大神解答!!
>>> 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"--太性感了 :)
只能往后放了。追问
像这样该如何修改,使其能正好对齐
追答使用”字符串格式化“,例如:
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中的输出对齐问题的主要内容,如果未能解决你的问题,请参考以下文章
Python二维列表,矩阵算式输出后格式的问题,请问这怎么把数字对齐?