超详细Python字符串格式化输出的最全介绍

Posted 编程界的小胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超详细Python字符串格式化输出的最全介绍相关的知识,希望对你有一定的参考价值。

字符串的格式化

格式化是对字符串进行一定的格式显示或输出的方式

在Python中有着丰富的格式化方式,可以很方便的输出任何你想要的文本样式。比如 format() 方法、 % 形式等,还可以设置输出长度、左右内容、是否居中等,下面就一一介绍下。

如下示例直接从IDLE中测试、或命令行进入Python均可。

format()方法格式化

Python中,字符串的format()方法可以实现内容的格式化,字符串中使用以0开始的占位符,它会用传入的参数依次替换字符串内对应的占位符{0}{1}...

占位符中使用数字指定对应format参数中的第几个参数;不使用数字时则第几个占位符对应第几个format参数。

如下,字符串中第一个占位符保持原样输出,第二个占位符保留两位小数:

>>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.125)
'今年Python使用率提高了7.12%'
>>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.126)
'今年Python使用率提高了7.13%'
>>> '今年{0}使用率提高了{1:.2f}%,{0}很受欢迎'.format('Python', 7.125)
'今年Python使用率提高了7.12%,Python很受欢迎'
复制代码

占位符 {} 也被称为槽。

关于浮点数舍入的规则: 由上面还可以看出,Python中保留小数位数时,并不是四舍五入,也不是大多数编程软件使用的“银行家舍入” —— 四舍六入五取偶(4舍6入5凑偶,四舍六入五成双)。

查看如下示例,这个舍入很有些难理解:

>>> '{:.2f}'.format(7.1251)
'7.13'
>>> '{:.2f}'.format(7.1259)
'7.13'
>>> '{:.2f}'.format(7.1250)
'7.12'
>>> '{:.2f}'.format(7.125)
'7.12'
>>> '{:.2f}'.format(7.1150)
'7.12'
>>> '{:.2f}'.format(7.115)
'7.12'
>>> # 到目前还是类似银行家舍入,但是,如下,换成 7.025
>>> '{:.2f}'.format(7.025)
'7.03'
>>> '{:.3f}'.format(3.1425)
'3.143'
复制代码

格式化时浮点数舍入的规则是和 round(number[, ndigits]) 函数的舍入规则一样的:

>>> round(7.025,2)
7.03
>>> round(7.125,2)
7.12
>>> round(7.1250,2)
7.12
>>> round(7.1251,2)
7.13
>>> round(3.1425,3)
3.143
复制代码

具体规则,可参考官方文档:docs.python.org/zh-cn/3/lib…

python中要想精确的计算或舍入,推荐使用decimal模块(库)。

format 中的格式控制参数

在槽中,可以通过指定:实现一些对格式输出的控制。

控制格式的详细设置为::<填充><对齐><宽度><,><.精度><类型>

  • : —— 引导符号。表示后面是格式控制
  • <填充> —— 用于填充的单个字符,默认为空格。会在槽对应的原字符串的基础上填充该字符。
  • <对齐> —— <表示 左对齐; >表示 右对齐; ^——表示 居中对齐。默认为左对齐。
  • <宽度> —— 槽设定的输出宽度。即该槽的位置输出的字符的宽度,如果宽度不够,则使用 <填充> 字符补满。
  • <,> —— 数字的千位分隔符,用于多余三位长度的数字时的千位分割。
  • <.精度> —— 浮点数小数精度或字符串最大输出长度。
  • <类型> —— 整数类型:b, c, d, o, x, X 分别对应 二进制、字符[Unicode编码的字符]、十进制、8进制、16进制、大写16进制; 浮点数类型:e, E, f, % 分别对应 小写e科学计数法、大写E科学计数法、浮点数、百分比(会自动显示该小数除以100后的百分比值)。

如下,格式化使用 = 填充,参数字符串居中,总长度为20的字符串:

>>> "{0:=^20}".format("PYTHON")  # 输出字符串格式为用=填充且居中总长度为20
'=======PYTHON======='
复制代码

格式化使用 * 填充,参数字符串右对齐,总长度为20的字符串:

>>> "{0:*>20}".format("BIT")    # 输出长度为20字符右对齐其他位置*填充
'*****************BIT'
复制代码

格式化使用默认 填充,参数字符串左对齐,总长度为10的字符串:

>>> "{:10}".format("BIT")       # 默认输出长度为10时左对齐填充空格
'BIT       '
复制代码

格式化使用千位分隔符为 ,,保留3位小数:

>>> "{0:,.3f}".format(12345.6789)   # 千分位,分割,保留3位小数
'12,345.679'
复制代码

字符串最长输出三位:

>>> "{0:.3}".format("abcdef")       # 输出字符串最长三位
'abc'
复制代码

输出一个整数的二进制、对应字符、十进制、8进制、16进制、大写16进制形式:

>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(125)   # 输出125的二进制、字符、十进制、8进制、16进制、大写16进制表示
'1111101,},125,175,7d,7D'
复制代码

输出一个浮点数的科学计数法、浮点数、百分比:

>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)  # 输出3.14的小写e科学计数法、大写E科学计数法、浮点数、百分比格式
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
复制代码

%实现格式化

% 符号也可以实现字符串的格式化。

在字符串内部%表示特定格式字符串的占位,字符串右侧通过%连接要格式化的参数,它们和内部占位符%一一对应。

在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序一一对应。

如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> '你好, %s, 一共消费 %d 元' % ('小明', 1000000)
'你好, 小明, 一共消费 1000000 元'
复制代码

常用占位符有:

  • %d 整数
  • %f 浮点数
  • %s 字符串
  • %x 十六进制整数

字符串内只有一个%?时,% 后的括号可以省略

格式化整数和浮点数时,指定输出整数或小数的位数,和是否补0

>>> '%2d-%03d' % (3, 1)
' 3-001'
>>> '%.3f' % 3.1415926
'3.142'
>>> '%.010f' % 3.1415926
'3.1415926000'
复制代码

%%转义来表示一个%

>>> '增长率是%d%%'%(10)
'增长率是10%'
复制代码

r输出原始字符串(不进行转义)

通过在字符串前加r可以实现输出原始字符串,即不进行字符串的转义。

>>> print(r'\\r\\n\\\\')
\\r\\n\\\\
>>> print('\\r\\n\\\\')

\\
复制代码

u表示以Unicode编码的字符串

如下对中文指定u编码示例:

>>> u'你好'
'你好'
复制代码

Python3中,字符串默认就是以Unicode编码的

 

 ① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

需要相关资料的可以通过扫一扫

 

以上是关于超详细Python字符串格式化输出的最全介绍的主要内容,如果未能解决你的问题,请参考以下文章

Python最全学习路线

史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)

史上最全的 IDEA Debug 调试技巧(超详细!建议收藏!)

文件操作的这些知识你学到了吗?画图+文字超详细讲解

Python25道练习题及详细答案解析,爆肝八小时总结

最全Java面试题+超详细总结(上)