Python之路(1)format详解

Str.format方法比之 %方法的优点:

1.传入数据可以不限参数数据类型

2.参数位置可以不按照传入顺序,且单个参数可以输出多次或者不输出

3.强大的填充和对齐功能,完善的进制转换和精度控制

一:填充

#使用关键字填充

>>> #使用key填充
print('{name} today {action}'.format(name='jopen',action='play soccer'))
jopen today play soccer

#使用字典填充

>>> place={'where':'wuhan','country':'China'}
>>> print('{place[where]} is a part of {place[contury]}'.format(place=place))
wuhan is a part of China

或者

>>> place={'where':'wuhan','country':'China'}
>>> print('{where} is a part of {contury}'.format(**place))
wuhan is a part of China


#使用索引填充

>>> print('{1} is {0}'.format('fruit','apple'))
apple is fruit

#通过对象属性来填充

class Hello:
    def __init__(self,name1,name2):
        self.name1=name1;
        self.name2=name2
    def __str__(self):
        return 'Hello {self.name1},I am {self.name2}'.format(self=self)
print(str(Hello('Tom','Jopen')))
Hello Tom,I am Jopen

#多次使用参数和不使用传入的参数

>>> print('{1} {1} {1},so many{1}'.format('apple','banana'))
banana banana banana,so manybanana

二:对齐与填充

对齐与填充经常一起使用

对齐:^、<、>分别是居中,左对齐,右对齐,后面带宽度

居中:居中符号为:,后面跟填充的字符,只能是一个字符,不指定填充字符默认为空格

#左填充

>>> ('{:*>8}').format('Hello')
'***Hello'

#右填充

>>> ('{:*<8}').format('Hello')
'Hello***
#中间对齐
>>> ('{:*^8}').format('Hello')
'*Hello**'

三:精度

#浮点数

>>> '{:.3f}'.format(3.1415926)
'3.142'

#字符串

>>> '{:.3s}'.format('3.1415926')
'3.1'

四:进制转换

>>> '{:b}'.format(33)
'100001'
>>> '{:d}'.format(33)
'33'
>>> '{:o}'.format(33)
'41'
>>> '{:x}'.format(33)
'21'

b,d,o,x分别为二进制,十进制,八进制,十六进制

五:格式转化

!s,!r,!a 对应str(), repr(),acdii()

>>> '{!s:*>8}'.format(8)
'*******8'
repr() 将输入转化为解释器读取的形式
!a我却不能转化为ascii码,不知道哪里出了问题.






你可能感兴趣的:(Python学习)