Python3.x那些事儿:[50]多种多样的输出格式
目前有两种方式来格式化输出格式,第一种就是自己动手来进行字符串的操作,虽然麻烦,但是都能实现。第二种方式就是使用str.format()函数。
string模块包含了一个Template类,这个类提供了把值替换成字符串的方法。
python提供把任意值转换成字符串的方法,repr()函数和str()函数。
str()函数时用来返回一个用户易读的字符串。repr()函数则是用来返回一个可以被解释器读取的字符串(不过没有对应的语法则会返回SyntaxError错误)。对于一些对象没有提供返回用户易读字符串的功能,则str()函数就会返回跟repr()一样的字符串。很多值,如数字或者是列表,字典这些结构型数据使用这两个方法时会返回相同的字符串。但是字符串非常特殊,使用这两个方法时会返回不同的结果。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/c255efc595ee41c15eb8bee78d88912ca4ca9b37.jpg)
repr()函数会添加字符串的引号和反斜线。并且参数可以使任意的python对象。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/2184380f8835dd8aa44157b303013870d4418737.jpg)
观察上述两种方法的不同之处。
str.rjust()函数会将字符串进行右对齐,左侧不足部分用空格填充。同样的有类似的函数,str.ljust()和str.center()。这些方法不会改变原来的字符串,而是会返回一个新的字符串。如果字符串太长,超出了参数的范围,则会返回原字符串,不会截断。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/b7b28f87031c99c0b85cf332af2fa872951fed37.jpg)
还有另外一个函数str.zfill(),它会把不足部分用0来填充,它可以识别出加号和减号。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/ac45306817e951e13b584ae25e3da824d9e9cf37.jpg)
str.format()的基础用法是这样的:
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/35f2224133bad34155ddf383427622bc7cc52c34.jpg)
大括号和他们中间的字符被替代成了str.format()函数的参数,大括号中的数字可以用来表示参数的位置。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/92dd32f7dfb2dc19bc8c49af95def4dca1391034.jpg)
也可以使用关键字参数,这个时候,参数的引用方式是直接在大括号中写关键字参数的名字。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/bf6e59704618dfda699b293289214f5792567734.jpg)
关键字参数和位置参数可以混合使用。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/988e1c532f6323854796f025cce833e038725d34.jpg)
大括号中还可以包含一些转义字符,他们可以在值被格式化之前先进行一些转换处理,相当于一个函数作用于值。如:'!a'等价于ascii()函数;'!s'相当于str()函数;'!r'相当于repr()函数。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/d9e638334884cde38b8c445af07f860e7d754234.jpg)
在大括号的参数后面可以使用冒号后跟一些更强大的控制字符串展示效果的参数。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/0cdb2f0e1799e92a581850f4e1fec314f0c5a034.jpg)
数字表示的是字符串的最小长度,这对于打印漂亮的表格很有用处。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/c6b994775ddd884ce9eb3d936cef28066a01f634.jpg)
如果有一个格式化字符串很长,但是你又不想把它分割,这个时候你可以使用变量的引用功能。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/c8373cbc7dc5cf6777fec7f28e96b814f5d02635.jpg)
还可以使用**操作符来传递关键词参数。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/9bc92713e8e5ecee251dac9bcc704618deda7a35.jpg)
这个方法可以和内置函数vars()结合起来使用,vars()函数返回一个字典类型,返回所有的本地变量。
![Python3.x那些事儿:[50]多种多样的输出格式](https://exp-picture.cdn.bcebos.com/562787cf02532f638524f282699147e832e05c35.jpg)