当前位置:首页 > 站长知识 > 正文内容

PYTHON格式化字符串的方式

2024-09-05站长知识21

在学习字符串的过程中,我们在前面讲了很多使用方法,实际在使用的过程中,我们经常会需要将字符串格式化,通过格式化输出我们需要的结果。

格式化字符串就是在先创建一个空间,然后再这个空间留几个位置,然后根据需求填入相应的内容,这里留出的位置相当于占位符,格式化字符串有两种方式。一种是使用%操作符,一种是使用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 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]]}

通过图来看一下这个结构:

python字符串2

在上面那个例子中只包含了简单的‘{}’,如果我们加以修饰的话可以使用上面的这些结构,我们来一一说明:

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. 总结

关于字符串就讲到这里,字符串的使用是十分频繁的,所以大家一定要通过习题去练习并掌握它。