字符格式化-逐步总结-f-string
Python 3.6引入了一个新的格式化字符串的方法:f-string(formatted string),它可以直接把变量写在字符串中,使得格式化的字符串看起来很直观。f可以小写,也可以用大写F。
一、变量使用:
例1:name = '张三' print(f'姓名:{name}')>>>姓名:张三。简单说就是{}里直接加变量。
例2:i = 0 print(f'{{{i}}}')>>>{0}。如果需要在f-string中使用{},如想要输出'{序号}',则使用{{}}。
二、表达式使用:
例1:print(f'{1+2*3}')>>>7。
三、函数使用:
例1:print(f'{math.pow(2, 3)}')>>>8.0。
例2:print(f'{(lambda x: 2 * x)(3)}')>>>6。使用lambda表达式时需要注意把表达式的定义用括号括起来,否则会报错。
四、其他事项:
1、转义字符只能在{}外,如实在有需要,则另用变量。
2、{}内如需使用{},则使用多对{{}}。参考变量使用的例2。
3、可使用'',"",'''''',""""""交替使用来避免引号冲突(和内容里的引号区别开就行,比如内容里有",那就用')。
五、格式化:
例1:print((f'{math.pi:.2f}'))>>>3.14。冒号 : 分隔变量与格式化的描述符,其中.2f表示取浮点数的小数点后两位。其他可参考format的格式化方法。
例2:print(f"{math.pi:010.2f}")>>>0000003.14。表示字符串全长为10,截取小数点后两位,高位用0补齐。
例3:print(f"{12345678:_d}")>>>12_345_678。表示将数字各位之间用分隔符分开。格式化方法见附表(数字分割描述符)。
例4:print(f"{'12345':_<10}")>>>12345_____。<左对齐填充10位,用_补足。(结尾是5个_)冒号后先指定填充符号,再指定对齐方式,最后指定位数。
例5:print(f"{'12345':_>10}")>>>_____12345。>右对齐填充10位,用_补足。(前面是5个_)格式化方法见附表(数字分割描述符)。
例6:print(f"{'12345':_^10}")>>>__12345___。^居中对齐填充10位,用_补足。(前面是2个_,结尾是3个_)
例7:print(f"{'12345':_>10.100}")>>>_____12345。.后为指定变量长度,不足就截断。因100>5,所以不会截断。(前面是5个_)
例8:print(f"{'12345':_>10.2}")>>>________12。.后为指定变量长度,不足就截断。因2<5,所以截断。(前面是8个_)
例9:print(f"{date.today():%m-%d %Y}")>>>07-24 2023。from datetime import date。-分隔符可任意。格式化方法见附表(时间/日期格式化描述符)
六、附表:
数字分割描述符:逗号适用于浮点数、复数和十进制整数;下划线适用于浮点数、复数和所有进制的整数;如果不指定分隔符,那么默认不使用分隔符。
格式描述符 | 含义与作用 |
---|---|
, | 使用 , 作为千位分隔符 |
_ | 使用 _ 作为千位分隔符 |
数字展示方式描述符:
格式描述符 | 含义与作用 |
---|---|
# | 切换数字显示方式 |
数字类型 | 不加“#”(默认情况) | 加上“#” | 加上后的变化 |
---|---|---|---|
二进制 | 111 1101 | 0b111 1101 | 前面显示“0b” |
八进制 | 175 | 0o175 | 前面显示“0o” |
十进制 | 125 | 125 | 无 |
十六进制 | 7D | 0x7D | 前面显示0X或0x(视原数字是否使用大写字母而定) |
数字符号格式化描述符:
格式描述符 | 含义与作用 |
---|---|
+ | 负数前加负号(-),正数前加正号(+) |
- | 负数前加负号(-),正数前不加任何符号(默认) |
(空格) | 负数前加负号(-),正数前加一个空格 |
填充截断描述符:
格式描述符 | 含义与作用 |
---|---|
< | 左对齐(字符串默认对齐方式) |
> | 右对齐(数值默认对齐方式) |
^ | 居中 |
格式描述符:
格式描述符 | 含义与作用 | 适用变量类型 |
---|---|---|
s | 普通字符串 | 字符串 |
b | 二进制整数 | 整数 |
c | 字符格式,按Unicode编码转换为对应字符 | 整数 |
d | 十进制整数 | 整数 |
o | 八进制整数 | 整数 |
x | 十六进制整数,使用小写字母 | 整数 |
X | 十六进制整数,使用大写字母 | 整数 |
e | 科学计数法,用 e 表示阶数 | 浮点数、复数、整数(自动转换成浮点数) |
E | 与e等价,用 E 表示阶数 | 浮点数、复数、整数(自动转换成浮点数) |
f | 小数,默认精度为6 | 浮点数、复数、整数(自动转换成浮点数) |
F | 与f等价,但将nan和inf转成大写 | 浮点数、复数、整数(自动转换为浮点数) |
g | 通用小数的格式,小数用f;大数用e | 浮点数、复数、整数(自动转换为浮点数) |
G | 与G等价,但使用大写字符 | 浮点数、复数、整数(自动转换为浮点数) |
% | 百分比格式 | 浮点数、整数(自动转换为浮点数) |
宽度描述符:
其中width适用于字符串,不适用于数字;0width适用于数字,不适用于字符串;width.precision的precision如果用在字符串上,则指定是前n位,如果用在浮点数上,则指定小数点后n位。
格式描述符 | 含义与作用 |
---|---|
width | 整数 width 指定宽度 |
0width | 整数 width 指定宽度,开头的 0 指定高位用 0 补足宽度 |
width.precision | 整数 width 指定宽度,整数 precision 指定显示精度 |
时间/日期格式化:
格式描述符 | 含义 | 显示样例 |
---|---|---|
%a | 星期几,使用缩写 | Sun |
%A | 星期几,使用完整名称 | Sunday |
%w | 星期几,从周日算起,周日为0 | 7 |
%u | 星期几,从周一算起,周日为7 | 6 |
%d | 日期,2位数字 | 04 |
%b | 月份,使用缩写 | Mar |
%B | 月份,使用完整名称 | March |
%m | 月份,2位数字 | 03 |
%y | 年份,后2位数字 | 23 |
%Y | 年份,4位数字 | 2023 |
%H | 小时,24小时制 | 21 |
%I | 小时,12小时制 | 09 |
%p | 上午/下午 | PM |
%M | 分钟,2位数字 | 12 |
%S | 秒钟,2位数字 | 20 |
%f | 微秒,6位数字 | 123321 |
%z | UTC偏移量,±HHMM[SS],未指定时区则返回空字符串 | +1030 |
%Z | 时区名 | CST |
%j | 一年中的第几天,3位数字 | 063 |
%U | 一年中的第几周,2位数字,首个周日后的星期为第0周 | 09 |
%W | 一年中的第几周,2位数字,首个周一后的星期为第0周 | 09 |
%V | 一年中的第几周,2位数字,首个包含1月4日的星期为第1周 | 09 |