Theme-Logo
    • 通知公告
  • [登录]/[注册]
  • D 返回首页
学习园地
  • 编程专栏

Python 字符串格式化输出

Python 字符串格式化输出
  • 返回首页

使用format( )拼接字符串

format()方法是字符串变量的内置方法,通过它可以实现字符串的优雅拼接,同时还支持格式化字符串,例如保留一位小数,对齐等,下边我们一起一探究竟。

例如:两个数求和,输出结果。之前我们可能是这样:

>>> a = 2
>>> b = 3
>>> result = a + b
>>> info = "a + b = " + str(result)
>>> print(info)
a + b = 5

使用format()方法只需要这样:

>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('a + b = {}'.format(result))
a + b = 5

当然还可以更精简,不过我们以演示用法为主,细心的小伙伴肯定发现这里多出来一个{},这是什么?有什么用呢?

{ }占位符

占位符,顾名思义就是“占着位置的符号”,在Python中,使用{}来表示。占位符的作用就是:这儿有东西,但是还没想好是啥,先放个东西占着,等有了再换过来。 类似于咱们排队站累了,放个啥占着。

默认占位符按参数顺序占位

下面我们把上边的程序升级一下:

>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('{} + {} = {}'.format(a, b, result))
2 + 3 = 5

诶?怎么回事?这三个{}怎么依次填正确的?其实是是按 foramt()中的顺序依次填入的{}的。


截屏2024-10-08 00.44.25.png


同理,如果你给他们换位置,那么结果就错了:

>>> print('{} + {} = {}'.format(result, a, b))
5 + 2 = 3

欸?那我要是写一大段,怎么能记得住第几个写的是什么?怎么办?那就需要用到参数名占位符了。

参数名占位符

参数名占位符是根据参数名称来对应的,比如:

>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('{p1} + {p2} = {p3}'.format(p3=result, p1=a, p2=b))
2 + 3 = 5

这里分别指定了占位的参数名称p1、p2、p3,然后在format()中分别为他们赋值了a、b、result,这样输出的结果就与format中的顺序无关了。

格式化输出

在数据统计、报表制作的时候,有时候遇到很长的数,需要指定显示的长度,这时候就可以使用格式化输出的方式。比如现在有一个数字3.1415926%,报表都统一保留两位小数,使用format()格式化输出如下:

>>> p = 0.031415926
>>> print('{0:0.2f}%'.format(p*100))
3.14%
>>> print('{:.2f}%'.format(p*100))
3.14%
>>>  print('{res:0.2f}%'.format(res=p*100))
3.14%

f是格式化控制符,完整的写法应该是{0:0.2f},语法为:{参数序号:格式控制符}或{参数名:格式控制符}。


截屏2024-10-08 00.46.20.png

第一个0:这表示索引,指的是要格式化的参数在传入的参数序列中的位置。在这个例子中,0表示第一个参数。

0.2f:这是一个格式说明符,它指定了浮点数的格式化方式。

  • • 0:表示在数字的左边填充0直到总宽度为指定的宽度(如果宽度没有指定,则不填充)。

  • • .2:表示小数点后保留两位数字。

  • • f:表示这是一个浮点数。

第三个f:这是格式类型指示符,表示格式化的类型是浮点数(float)。

格式类型指示符释义
s字符串
d十进制整数
f/F十进制浮点数
g/G十进制整数或浮点数
o八进制整数
x/X十六进制整数
>>> num = 255
>>> print("{:d}".format(num))  
255
>>> print("{:f}".format(3.1415926))  
3.141593
>>> print("{:g}".format(3.1415926))  
3.14159
>>> print("{:o}".format(num)) 
377
>>> print("{:x}".format(num))  
ff
>>> print("{:X}".format(num))  
FF


格式化输出——填充宽度

在Python的字符串格式化中,填充宽度是一个可选的参数,它指定了输出的最小字符数。如果格式化后的字符串长度小于这个宽度,它会用指定的填充字符来填充剩余的空间,直到达到指定的宽度。

  1. 使用默认的空格填充:

>>> print("{:10d}".format(123))  
'       123'  # 数字123后面填充了7个空格
  • 指定填充字符:

  • 在格式说明符中,在宽度和类型之间加入一个填充字符,例如,使用0作为填充字符:

>>> print("{:010d}".format(123))  
'0000000123'  # 数字123前面填充了7个0
  • 指定对齐方式:

  • 右对齐的例子:

>>> print("{:>10s}".format("hello"))  
'    hello'  # 字符串hello左侧填充了4个空格

居中对齐的例子:

>>> print("{:^10s}".format("hello")) 
'   hello   '  # 字符串hello两侧各填充了3个空格
  • • <:左对齐(默认),填充字符填充右侧。

  • • >:右对齐,填充字符填充左侧。

  • • ^:居中对齐,填充字符填充两侧。


  • 使用负号指定宽度:

  • 如果在宽度前加一个负号,它将自动选择右对齐,并且忽略填充字符的指定(如果指定了的话):

>>> print("{:-10s}".format("hello"))  
'hello     '  # 字符串hello右侧填充了5个空格


回顶部