Python 字符串 .format 方法详解
Python 字符串 .format 方法详解文章目录Python 字符串 .format 方法详解前言利用字符串 .format 方法(一)、基本使用(二)、.format 方法的功能(三)、书写格式和优先顺序 相关博客前言字符串 .format 方法 为字符串格式化方法之一,欲要了解更多请移步总集篇Python 字符串格式化最强详解2.0 『如何输出好看的内容』利用字符串 .format 方法
Python 字符串 .format 方法详解
前言
字符串 .format 方法 为字符串格式化方法之一,欲要了解更多请移步总集篇 Python 字符串格式化最强详解2.0 『如何输出好看的内容』
利用字符串 .format 方法
自 Python 2.6 版本发布,字符串类型新增了一个方法 .format()
用于字符串格式化,这也是 Python 第二种字符串格式化方法
使用 str.format(a)
方法可以摆脱 占位符数据类型判断 的烦恼,并且功能更加强大,先来看看语法
(一)、基本使用
张三今天不买彩票了,但在路上遇到了 罗翔,两人欢快的谈起了 法律知识
print("张三今天不买彩票了,但在路上遇到了{},两人欢快的谈起了{}".format("罗翔", "法律知识"))
👆🏻使用了花括号{}
代替了 占位符所使用百分号%
,并在结尾调用了str.format()方法,将参数给传了进去,之间用逗号进行分割
👇🏻还能指定参数传递的位置,在花括号{}
中指定,而 .format()
中的顺序应为 .format(1, 2, 3, 4, 5, .....)
print("张三今天不买彩票了,但在路上遇到了{0},两人欢快的谈起了{1}".format("罗翔", "法律知识"))
print("张三今天不买彩票了,但在路上遇到了{1},两人欢快的谈起了{0}".format("罗翔", "法律知识"))
张三今天不买彩票了,但在路上遇到了罗翔,两人欢快的谈起了法律知识
张三今天不买彩票了,但在路上遇到了法律知识,两人欢快的谈起了罗翔
怎么样,看到这是不是已经可以感受到 .format()
方法比 占位符好用且更强大的 原由
接着往下看,.format()
方法中还能使用关键字参数,使用参数名引用值
print("张三今天不买彩票了,但在路上遇到了{name},两人欢快的谈起了{topic}".format(name="罗翔", topic="法律知识"))
对于上述的传值方法,可以不限传递次数,且可以任意组合使用
print("{1}今天不买{0}了,但在路上遇到了{name},{1}、{name}"
"两人欢快的谈起了{topic}".format("彩票", "张三", name="罗翔", topic="法律知识"))
张三今天不买彩票了,但在路上遇到了罗翔,张三、罗翔两人欢快的谈起了法律知识
(二)、.format 方法的功能
1) 对数字类型处理
Ⅰ. 指定小数精度
这里的用法和占位符差不多,不同的是要在前面加个冒号 ,如 {:.2f}
i = 2 # 整数类型
f = 2.3333 # 浮点数类型
print("精确到小数点后两位:{:.2f}".format(i))
print("精确到小数点后两位:{:.2f}".format(f))
精确到小数点后两位:2.00
精确到小数点后两位:2.33
因为 str.format()
方法并不像 占位符方法一样需要 转换说明符,不保留小数 以整数形式表示 的方法作废,但可以先行转化为整数类型 int()
f = 2.3333
print("不保留小数:{:.0f}".format(f))
print("不保留小数:{}".format(int(f)))
不保留小数:2
不保留小数:2
这里使用的均是向下取整,详情请参考 Python 关于浮点数取整详解
Ⅱ. 带符号显示
这里的用法和占位符差不多,也是使用 + 符号
i = 2.3333
print("带符号显示: {:+} {:+}".format(-i, i))
print("带符号显示并精确到小数点后两位: {:+.2f}".format(i))
print("带符号显示并精确到小数点后两位: {:+.2f}".format(-i))
带符号显示: -2.3333 +2.3333
带符号显示并精确到小数点后两位: +2.33
带符号显示并精确到小数点后两位: -2.33
2) 对齐与填补
对齐符号 | 书写格式 | 描述 |
---|---|---|
< | {:<10} |
左对齐并且指定宽度10,一般配合宽度使用 |
> | {:>10} |
右对齐并且指定宽度10,一般配合宽度使用 |
^ | {:^10} |
居中对齐并且指定宽度10,一般配合宽度使用 |
= | {:=+10} |
右对齐,与 > 不一样的是会携带符号在最左侧 只作用于整数或浮点数类型 |
x = "张三"
print("左对齐: {:<10}".format(x))
print("右对齐: {:>10}".format(x))
print("居中对齐: {:^10}".format(x))
左对齐: 张三
右对齐: 张三
居中对齐: 张三
如果不指定填充字符,那么输出的结果是将默认以空格为填充,如果指定填充类型的话,书写格式如下👇🏻
x = "张三"
print("左对齐: {:-<10}".format(x))
print("右对齐: {:->10}".format(x))
print("居中对齐: {:-^10}".format(x))
左对齐: 张三--------
右对齐: --------张三
居中对齐: ----张三----
这里单独讲一下 = 对齐符号
x = 2.333
print("右对齐: {:=10}".format(x))
右对齐: 2.333
如果直接使用这个符号的话,效果是和 > 对齐符号是 一样的
但如果把数值变成负数,再来看看
x = 2.333
print("右对齐: {:=10}".format(-x))
右对齐: - 2.333
可以发现,符号会显示到最左边,证明此对齐符号作用是 将数字右对齐,同时把 正负号 放到最左边
在默认情况下,正数不会显示 正号,显示那就得配合之前在 Ⅱ. 带符号显示中 提到过的 + 号来实现
x = 2.333
print("右对齐: {:=+10}".format(x))
右对齐: + 2.333
需要注意的是,== 对齐符号 只作用于 整数或浮点数,否则报错
3) type类型值和显示百分比
type类型值 | 书写格式 | 描述 | 注意 |
---|---|---|---|
b | {:b} |
将十进制整数转换成二进制格式 | 只适用整数 |
c | {:c} |
将十进制整数转换 Unicode 对应字符 | 只适用整数 |
d | {:d} |
十进制整数 | 只适用整数 |
e | {:e} |
科学计数法,未指定精度时默认小数点后 6 位 | 只适用数字类型 |
E | {:E} |
科学计数法,不同的是使用大写字母 E 作分割字符 | 只适用数字类型 |
f | {:f} |
浮点数,未指定精度时默认小数点后 6 位 | 只适用数字类型 |
F | {:F} |
浮点数,于小写 f 不同在于以大写表示特殊类型 nan 、inf |
只适用数字类型 |
o | {:o} |
将十进制整数转换成八进制格式 | 只适用整数 |
x | {:x} |
将十进制整数转换成十六进制格式,小写字母表示 9 以上 | 只适用整数 |
X | {:X} |
将十进制整数转换成十六进制格式,大写字母表示 9 以上 | 只适用整数 |
% | {:%} |
显示百分比,默认小数点后六位,1=100% | 只适用整数、浮点数 |
结合上面讲过的内容使用 type类型值
-
显示百分比
x = 0.23333 print("居中显示百分比:{:%}".format(x)) print("居中显示百分比:{:.2%}".format(x))
居中显示百分比:23.333000% 居中显示百分比:23.33%
可以看到如果不指定精度,默认为小数点后六位显示,需要注意的是这个百分比并不是直接加个符号就完事了,是有换算的真实百分比,1=100%为单位
相信仔细看到这的已经注意到了,此写法和 之前提到过的 Ⅰ. 指定小数精度 写法很像,这里再做一些补充:
指定小数精度书写格式为{:.精度f}
,这个f
其实就是将数值转换成浮点数类型,传递 浮点数 时可以不用加f
{:.精度}
,会以整数部分作为精度开头而不是小数部分,可要是传递 整数 的话将会报错,所以加个小小的f
更是为了书写规范 以及 代码严谨性 -
科学计数法
print("科学计数法: {:e}".format(23333)) print("科学计数法: {:E}".format(23333))
科学计数法: 2.333300e+04 科学计数法: 2.333300E+04
-
各进制表示
分别展示 二进制、八进制、十六进制 于 对齐与填补 的搭配使用
这与 百分号占位符 使用方法上 相似
print("居中对齐 二级制: {:-^10b}".format(31)) print("居中对齐 八进制: {:-^10o}".format(31)) print("居中对齐 十六进制: {:-^10x}".format(31)) print("居中对齐 十六进制: {:-^10X}".format(31))
居中对齐 二级制: --11111--- 居中对齐 八进制: ----37---- 居中对齐 十六进制: ----1f---- 居中对齐 十六进制: ----1F----
如果需要显示进制前轴,则需要在前面加个 # 符号
print("居中对齐 二级制: {:-^#10b}".format(31)) print("居中对齐 八进制: {:-^#10o}".format(31)) print("居中对齐 十六进制: {:-^#10x}".format(31)) print("居中对齐 十六进制: {:-^#10X}".format(31))
居中对齐 二级制: -0b11111-- 居中对齐 八进制: ---0o37--- 居中对齐 十六进制: ---0x1f--- 居中对齐 十六进制: ---0X1F---
-
整数转换 Unicode 对应字符
用法和 百分号占位符 一样,
.format
可以结合其他功能使用print("{:c}{:c}{:c}{:c}".format(20320, 22909, 19990, 30028))
你好世界
(三)、书写格式和优先顺序👺
.format()
方法的书写格式如下: 👇
英文原文
"{[[fill]align][sign][width][grouping_option][.precision][type]}".format(...)
中文释义
"{[[填充]对齐][符号][宽度][分组选项][.精度][类型]}.format(...)"
-
填充 fill: 任意字符,与 对齐 搭配使用
-
对齐 align: <、>、^、=,参考 3) 对齐与填补 表
-
符号 sign: +、-、" "、#
符号 sign 书写格式 描述 + {:+}
为数字添加正负号,参考Ⅱ. 带符号显示 - {:-}
只为负数添加负号(默认),参考Ⅱ. 带符号显示 " "(空格) {: }
负数会显示负号,正数前会多个空格 # {:#}
对于换算进制的类型值,会在开头显示进制前缀,参考 3. 各进制表示 -
宽度 width: 定义最小宽度的整数,默认宽度由内容确认
-
分组选项 grouping_option:
分组符号 描述 _ 以下划线 _ 进行分组 , 以逗号 , 进分组 这个分组功能比较有趣,用不上的时候不知道有,用的上的时候又很管用
先来看看官网是怎么描述这两个 分组符号 的- ’,’ 选项表示使用逗号作为千位分隔符
- ’_’ 选项表示对浮点表示类型和整数表示类型 ‘d’ 使用下划线作为千位分隔符。 对于整数表示类型 ‘b’, ‘o’, ‘x’ 和 ‘X’,将为每 4 个数位插入一个下划线。 对于其他表示类型指定此选项则将导致错误。
-
货币形式:
print("货币形式: {:,d}".format(66**6)) print("货币形式: {:_d}".format(66**6))
货币形式: 82,653,950,016 货币形式: 82_653_950_016
-
各进制表示
print("二进制: {:#_b}".format(31**5)) print("八进制: {:#_o}".format(31**5)) print("十六进制: {:#_x}".format(31**5)) print("十六进制: {:#_X}".format(31**5))
二进制: 0b1_1011_0100_1101_1000_1001_1111 八进制: 0o1_5515_4237 十六进制: 0x1b4_d89f 十六进制: 0X1B4_D89F
-
.精度 .precision: 指定小数精度,参考 Ⅰ. 指定小数精度
-
类型 type: 参考 4) type类型值和显示百分比 表
别忘了还可以配合 1) 基本使用 里提到的 指定参数传递位置 灵活使用
相关博客😏
更多推荐
所有评论(0)