[Python] 看了这一篇,你还不会字符串的格式化?

博客主页:程序喵正在路上 的博客主页
欢迎关注点赞收藏留言
本文由 程序喵正在路上 原创,CSDN首发!
系列专栏:Python学习
首发时间:2022年4月26日
✅如果觉得博主的文章还不错的话,希望小伙伴们三连支持一下哦

目录

  • 前言
  • format() 方法的基本使用
  • format() 方法的格式控制
  • 字符串和字节流

前言

为什么会有字符串类型的格式化问题呢? 例如,一个程序希望输出如下内容:
“2016-12-31:计算机PYTHON的CPU占用率为10%。”

其中,下划线的内容可能会变化,需要由特定函数运算结果进行填充,最终形成上述格式字符串作为输出结果。字符串格式化用于解决字符串和变量同时输出时的格式安排。

字符串是程序向控制台、网络、文件等介质输出运算结果的主要形式之一,为了能提供更好的可读性和灵活性,字符串类型的格式化是运用字符串类型的重要内容之一。Python 语言同时支持两种字符串格式化方法,一种类似 C语言中 printf() 函数的格式化方法,支持该方法主要考虑与大批 C 语言程序员编程习惯相一致;另一种采用专门的 str.format() 格式化方法。由于 Python 中更为接近自然语言的复杂数据类型 (如列表和字典等) 无法通过类 C 的格式化方法很好表达,Python 已经不在后续版本中改进 C 风格格式化方法。Python 语言将主要采用 format() 方法进行字符串格式化。本文章所有例子均采用该方法,同时建议读者尽量使用该方法。

拓展:
printf() 函数是 C 语言中向控制台输出信息的主要函数,类似 Python 语言中的 print() 函数。

format() 方法的基本使用

字符串 format() 方法的基本使用格式如下:

<模板字符串>. format (<逗号分隔的参数>)

模板字符串由一系列组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将 format() 方法中逗号分隔的参数按照序号关系替换到模板字符串的中。槽用大括号({}) 表示,如果大括号中没有序号,则按照出现顺序替换。

如果大括号中指定了使用参数的序号,编译器就会按照序号对应的参数进行替换,参数从0开始编号。调用 format() 方法后会返回一个新的字符串。例如:

print("{}:计算机 {} 的CPU占用率为{}%。".format("2016-12-31", "PYTHON", 10))

2016-12-31:计算机 PYTHON 的CPU占用率为10%。

format() 方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号,采用{{{表示,}}表示},例如:

print("{}{}{}".format("圆周率是 ", 3.1415926, "..."))

圆周率是 3.1415926…

print("圆周率{{{1}{2}}}是{0}".format("无理数", 3.1415926, "..."))

圆周率{3.1415926…}是无理数

s = "圆周率{{{1}{2}}}是{0}"                         # 大括号本身是字符串的一部分
print(s)

s = s.format("无理数", 3.1415926, "...")   # 当调用 format() 时解析大括号
print(s)

圆周率{{{1}{2}}}是{0}
圆周率{3.1415926…}是无理数

format() 方法的格式控制

format() 方法中模板字符串的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:

{<参数序号>: <格式控制标记> }

其中,格式控制标记用来控制参数显示时的格式,各种格式对应内容如下

格式控制标记 对应内容
引导符号
<填充> 用于填充的单个字符
<对齐> < 左对齐 、 > 右对齐 、 ^ 居中对齐
<宽度> 槽的设定输出宽度
<,> 数字的千位分隔符,适用于整数和浮点数
<.精度> 浮点数小数部分的精度或字符串的最大输出长度
<类型> 整数类型 b,c,d,o,x,X;浮点数类型 e,E,f,%

格式控制标记包括 <填充>、<对齐>、<宽度>、<,>、<.精度>、<类型> 6 个字段,这些字段都是可选的,可以组合使用,这里按照使用方式逐一介绍。

<宽度><对齐><填充>3 个相关字段。<宽度>指当前槽的设定输出字符宽度,如果该槽对应的 format() 参数长度比<宽度>设定值大,则使用参数实际长度;如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。<对齐>指参数在宽度内输出时的对齐方式,分别使用 <>^ 3个符号表示左对齐、右对齐和居中对齐。<填充>指宽度内除了参数外的字符采用什么方式表示,默认采用空格,可以通过填充更换。例如:

s = "PYTHON"
print("{0:30}".format(s))

print("{0:>30}".format(s))

print("{0:-^30}".format(s))

print("{0:3}".format(s))

PYTHON                           #默认左对齐
               PYTHON            #默认右对齐
------------PYTHON------------
PYTHON

格式控制标记中的逗号 (,) 用于显示数字类型的千位分隔符,例如:

print("{0:-^20,}".format(1234567890))

—1,234,567,890----

print("{0:-^20}".format(1234567890))

-----1234567890-----

print("{0:-^20,}".format(12345.67890))

----12,345.6789-----

<.精度> 表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。

print("{0:.2f}".format(12345.67890))

12345.68

print("{0:H^20.3f}".format(12345.67890))	# 对比输出

HHHHH12345.679HHHHHH

print("{0:.4}".format("PYTHON"))

PYTH

<类型> 表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括以下 6 中:
(1) b:输出整数的二进制方式
(2) c:输出整数对应的 Unicode 字符
(3) d:输出整数的十进制方式
(4) o:输出整数的八进制方式。
(5) x:输出整数的小写十六进制方式。
(6) X:输出整数的大写十六进制方式。

print("{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425))

110101001,Ʃ,425,651,1a9,1A9

对于浮点数类型,输出格式包括以下 4 种:
(1) e:输出浮点数对应的小写字母 e 的指数形式。
(2) E:输出浮点数对应的大写字母 E 的指数形式。
(3) f:输出浮点数的标准浮点形式。
(4) %:输出浮点数的百分形式。

浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。

print("{0:e},{0:E},{0:f},{0:%}".format(3.14))

3.140000e+00,3.140000E+00,3.140000,314.000000%

print("{0:.2e},{0: .2E},{0:.2f},{0: .2%}".format(3.14))

3.14e+00, 3.14E+00,3.14, 314.00%

字符串和字节流

字节流是字节组成的序列,字节由固定的 8 个比特组成,因此,字节流从二进制角度有确定的长度和存储空间。Python 字符串由编码字符的序列组成,字符根据编码不同长度也不相同。因此,从存储空间角度,字符串和字节流不相同。
硬盘上所有文件都以字节形式存储,例如,文本、图片及视频等,真正存储和传输数据时都是以字节为单位。字符值在内存中形成,由字节流经过编码处理后产生。

这次的分享就到这里啦,继续加油哦^^
有出错的地方欢迎在评论区指出来,共同进步,谢谢啦

你可能感兴趣的:(Python入门,python)