java数据居中对齐怎么表示 java字符串居中对齐_bc

每一个字符串的宽度不同,导致打印输出时的格式不像上图中那么工整。

将上图中的字典中的每个键的字符串宽度调整成相同的值,就可以像上图那样输出。

方法一:使用字符串的str.ljust(),str.rjust(),str.center()进行左右居中对齐

java数据居中对齐怎么表示 java字符串居中对齐_格式化输出_02

java数据居中对齐怎么表示 java字符串居中对齐_字符串_03

>>> help(str.ljust)
Help on method_descriptor:

ljust(...)
    S.ljust(width[, fillchar]) -> string
    
    Return S left-justified in a string of length width. Padding is
done using the specified fill character (default is a space).

help(str.ljust)

第一个参数是,字符串S的宽度,第二个参数是,以此字符串作为填充

>>> s = 'abc'
>>> s.ljust(20)
'abc

(1)如上例使用左对齐,使用空格补齐字符串

>>> s.ljust(20,'+')
'abc+++++++++++++++++'

(2)右对齐,在左面填充

>>> s.rjust(20)
'                 abc'
>>> len(s.rjust(20))
20

(3)居中对齐

>>> s.center(20)
'        abc         '

方法二:使用format方法

java数据居中对齐怎么表示 java字符串居中对齐_格式化输出_02

java数据居中对齐怎么表示 java字符串居中对齐_字符串_03

>>> help(format)
Help on built-in function format in module __builtin__:

format(...)
    format(value[, format_spec]) -> string
    
    Returns value.__format__(format_spec)
format_spec defaults to ""

help(format)

第一个参数是要格式的字符串,第二个参数是指定的规则

(1)左对齐 使用’<20’

>>> format(s,'<20')
'abc

(2)右对齐,使用‘>20’

>>> format(s,'>20')
'                 abc'

(3)居中,使用‘^20’

>>> format(s,'^20')
'        abc         '

 

本例实现方法:

(1)生成字典d

>>> d = {'lodDist':100.0, 'smallcull':0.04,'Distcull':500,"trilinear":40,"farclip":477}
>>> d
{'smallcull': 0.04, 'farclip': 477, 'lodDist': 100.0, 'Distcull': 500, 'trilinear': 40}

(2)获取字典的所有键,组成列表

 

>>> d.keys()
['smallcull', 'farclip', 'lodDist', 'Distcull', 'trilinear']

 

(3)计算每一个键值的字符串宽度

>>> map(len,d.keys())
[9, 7, 7, 8, 9]

(4)计算字典所有的键值字符串宽度的最大值

>>> m = max(map(len,d.keys()))
>>> m
9

(5)格式化输出

        a、py2的方式       

>>> for x in d:
    print x.ljust(m),':',d[x]

    
smallcull : 0.04
farclip   : 477
lodDist   : 100.0
Distcull  : 500
trilinear : 40

     

       b、py2和py3都可以的方式

>>> for x in d:
    print("%s%s%s"%(x.ljust(m),':',d[x]))

    
smallcull:0.04
farclip  :477
lodDist  :100.0
Distcull :500
trilinear:40

    此方式注意,类似于C语言的格式化输出,但字符串和格式化部分使用“%”分隔(C语言使用“,”分隔)