PYTHON格式化字符串的方式
在学习字符串的过程中,我们在前面讲了很多使用方法,实际在使用的过程中,我们经常会需要将字符串格式化,通过格式化输出我们需要的结果。
格式化字符串就是在先创建一个空间,然后再这个空间留几个位置,然后根据需求填入相应的内容,这里留出的位置相当于占位符,格式化字符串有两种方式。一种是使用%操作符,一种是使用format()方法。
1. %操作符
%操作符在我们格式化字符串的时候十分方便,它的语法结构如下:
1 | ‘ % [ + ][ - ][ 0 ][.m]格式化字符’ % iteration |
1) iteration为我们要填入的内容,第一个%后面为我们要选择的格式。
2) [+]为右对齐‘+’为我们可以填入的参数,数字大小代表对齐宽度。
3) [-]为左对齐‘-’为我们可以填入的参数,数字大小代表对齐宽度。
4) [.m]中的m为可选精度,表示保留小数点后几位小数。
5) 格式化字符为我们需要选定的格式,它的常用类型为字符串%s、十进制整数%d、单字符%c、浮点数%f、十六进制数%x、八进制数%o、字符%%。
关于%操作符的理解可能比较抽象,我们通过例子来了解一下它。我们比较常用的就是输出一个浮点数,小数点后保留2位小数,代码如下:
1 2 | >>> my_str = 66666.66666 >>> print ( '保留2位小数格式为:%.2f' % my_str)保留 2 位小数格式为: 66666.67 |
保留小数的时候会自动进行四舍五入操作,在使用的时候主要注意它的形式,我们可以选择一个或多个组合在一起来格式化字符串,上面是我们使用了一种格式化操作,格式化部分为‘%.2f’,然后再字符串的最后用%连接相应字符串即直接等同于相应内容。
我们再介绍一下对齐方式的使用:
1 2 3 4 5 6 7 8 9 | >>> for i in range ( 5 ): ... print ( '%-5d' % i,end = ' ' ) #左对齐方式 ... print ( '%5d' % i) #右对齐方式 ... 0 0 1 1 2 2 3 3 4 4 |
5是代码对齐的宽度,我们采用左右对齐,第一列为左对齐,宽度为5,然后不换行再次输出i,第二次输出为右对齐,因此输出入上所示。
关于%操作符就将到这里,大家在下面自己进行练习可以更快的去掌握这些知识。
2. format()方法
format()方法提供了更多的方法去格式化字符串,它的基本语法是通过‘{}’和‘:’来代替‘%’。它的语法格式为:
str.format()
我们通过例子来看一下:
1 2 3 | namea = '小明' nameb = '小华' print ( '{}是{}的好朋友' . format (namea,nameb)) |
这个例子是最简单的使用方式,但是既然这个方法是后来引入的方法,那么它一定有它比较好用的地方,下面我们介绍一下它的具体方法。
在占位符里结构可以为:
1 | {[index[:[fill]align][width][ #][.k][type]]} |
通过图来看一下这个结构:
在上面那个例子中只包含了简单的‘{}’,如果我们加以修饰的话可以使用上面的这些结构,我们来一一说明:
1) index为索引位置,我们可以给他一个数字,用来指定对象在列表中的索引位置,索引值从0开始,如果没有索引值,按从左到右的顺序。像上面的例子,我们如果加了索引值:
1 2 3 | namea = '小明' nameb = '小华' print ( '{1}是{0}的好朋友' . format (namea,nameb)) |
那么他们的位置就进行了一个调换。
2) ‘:’为后续内容使用的前提,使用后面操作的时候都要加一个‘:’。
3) fill可以选择一个参数作为空白填充的字符数。
4) width是可以选择一个参数来指定长度。
5) align可以选择一个参数作为对齐方式,参数为‘>’代表右对齐,‘<’为左对齐,‘=’为右对齐,但是符号放在最左侧,‘^’代表居中,这些需要搭配width使用。
我们看个例子:
1 2 3 | >>> my_str = 'dotcpp' >>> print ( '{:@>10}' . format (my_str)) @@@@dotcpp |
这个例子里我们选择了右对齐,然后宽度为10,空白字符用符号@代替。
6) ‘#’为进制前缀。
7) .k中的k是可选参数,用来表示小数点后保留的数字。
8) type可选择参数来指定类型,常用的有S来表示字符串、D来表示十进制整数、%来表示百分比、f或者F表示浮点数。
下面我们在通过一个例子来使用一下上述这些方法。
1 2 3 | my_str = 'dotcpp' #先定义两个字符串 my_string = 123456.654321 print ( 'my_str:{1:!^20s}\nmystring:{0:$^20.2f}' . format (my_string,my_str)) |
输出为:
1 2 | my_str:!!!!!!!dotcpp!!!!!!! mystring:$$$$$ 123456.65 $$$$$$ |
对于my_str,‘1‘为它的索引位置,‘!’来替代空白字符,‘^’代表位置居中,20为宽度,‘s’为字符串类型。
对于my_string,‘0’位它的索引位置,‘$’来代替空包字符,‘^’代表位置居中,20位宽度,‘.2’为小数点后保留2位小数,‘f’为浮点类型。
3. 总结
关于字符串就讲到这里,字符串的使用是十分频繁的,所以大家一定要通过习题去练习并掌握它。