### 占位符 | 符 号 | 描述 | | :----: | :----------------------------------: | | `%c` | 格式化字符及其ASCII码 | | ` %s` | 格式化字符串 | | `%d` | 格式化整型 | | `%u` | 格式化无符号整型 | | ` %o` | 格式化无符号八进制数 | | `%x` | 格式化无符号十六进制数 | | `%X` | 格式化无符号十六进制数(大写) | | ` %f` | 格式化浮点数字,可指定小数点后的精度 | | ` %e` | 用科学计数法格式化浮点数 | | `%E` | 作用同`%e`,用科学计数法格式化浮点数 | | `%g` | `%f`和`%e`的简写 | | `%G` | `%f `和` %E` 的简写 | | `%p` | 用十六进制数格式化变量的地址 | ### 格式化辅助指令 | 符号 | 功能 | | :---: | :----------------------------------------------------------: | | * | 定义宽度或者小数点精度 | | - | 用做左对齐 | | + | 在正数前面显示加号( + ) | | | 在正数前面显示空格 | | # | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') | | 0 | 显示的数字前面填充'0'而不是默认的空格 | | % | '%%'输出一个单一的'%' | | (var) | 映射变量(字典参数) | | m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) | ### str.format - 通过 {} 和 : 来代替以前的 % - 用大括号来转义大括号 ```python >>> print ("{} 对应的位置是 {{0}}".format("school")) school 对应的位置是 {0} >>> ``` - format 函数可以接受不限个参数,位置可以不按顺序 ```python >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world' >>> "{0} {1}".format("hello", "world") # 设置指定位置 'hello world' >>> "{1} {0} {1}".format("hello", "world") # 设置指定位置 'world hello world' ``` - 为format设置参数 ```python #!/usr/bin/python # -*- coding: UTF-8 -*- print("网站名:{name}, 地址 {url}".format(name="w3cschool教程", url="www.w3cschool.cn")) # 通过字典设置参数 site = {"name": "w3cschool教程", "url": "www.w3cschool.cn"} print("网站名:{name}, 地址 {url}".format(**site)) site = {"name": "w3cschool教程", "url": "www.w3cschool.cn"} print("网站名:{0[name]}, 地址 {0[url]}".format(site)) # 通过列表索引设置参数 my_list = ['w3cschool教程', 'www.w3cschool.cn'] print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的 ``` - 向str.format传递对象,利用对象的属性进行格式化 ```python #!/usr/bin/python # -*- coding: UTF-8 -*- class AssignValue(object): def __init__(self, value): self.value = value my_value = AssignValue(6) print('value 为: {0.value}'.format(my_value)) # "0" 是可选的 print('value 为: {.value}'.format(my_value)) ``` ### f-string格式化 - f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去 ```python >>> name = 'W3Cschool' >>> print(f'Hello {name}') # 替换变量 Hello W3Cschool >>> >>> print(f'{1+2}') # 使用表达式 3 >>> >>> w = {'name': 'W3Cschool', 'url': 'www.w3cschool.cn'} >>> print(f'{w["name"]}: {w["url"]}') W3Cschool: www.w3cschool.cn >>> ``` - 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果 ```python >>> x = 1 >>> print(f'{x+1=}') # Python 3.8 x+1=2 >>> ``` ### 数字格式化 | 数字 | 格式 | 输出 | 描述 | | :--------- | :----------------------------------------------------------- | :--------------------------------------- | :--------------------------- | | 3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 | | 3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 | | -1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 | | 2.71828 | {:.0f} | 3 | 不带小数 | | 5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) | | 5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) | | 10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) | | 1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 | | 0.25 | {:.2%} | 25.00% | 百分比格式 | | 1000000000 | {:.2e} | 1.00e+09 | 指数记法 | | 13 | {:10d} | 13 | 右对齐 (默认, 宽度为10) | | 13 | {:<10d} | 13 | 左对齐 (宽度为10) | | 13 | {:^10d} | 13 | 中间对齐 (宽度为10) | | 11 | '{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11) | 1011
11
13
b
0xb
0XB | 二进制 | - ^, <, > 分别是居中、左对齐、右对齐,后面带宽度 - : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充 - \+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格 - b、d、o、x 分别是二进制、十进制、八进制、十六进制