f 字符串
1. 千位分隔符
对于位数较多的大数,f 字符串提供了 ,
或者 _
作为千位分隔符,使用方法如下:
>>> n: int = 10000000000
>>> print(f"{n:,}")
>>> print(f"{n:_}")
10,000,000,000
10_000_000_000>>> n: float = 10000000000.32412
>>> print(f"{n:,}")
>>> print(f"{n:_}")
10,000,000,000.32412
10_000_000_000.32412
2. 对齐与填充
对于需要输出类似表格形式的内容时,可以通过 :数字
来设置总输出长度,超出字符串长度的将使用空白字符进行占位。
使用 <
、>
、^
分别控制输出内容为左对齐、右对齐与居中对齐。
同时可以使用其他符号来填充原本的空格处,比如 *
、_
、#
、|
等。
>>> var: str = "Hello, World!"
>>> print(f"{var}")
Hello, World!
>>> print(f"{var:5}") # 长度不够就正常输出字符串
Hello, World!
>>> print(f"{var:20}")
Hello, World! # 注意这里是有空格的
>>> print(f"{var:>20}")Hello, World!
>>> print(f"{var:<20}")
Hello, World!
>>> print(f"{var:^20}")Hello, World!
>>> print(f"{var:*^20}")
___Hello, World!____
>>> print(f"{var:*<20}")
Hello, World!*******
>>> print(f"{var:*>20}")
#######Hello, World!
3. 日期和时间
针对 datetime 中的时间类,可以使用多种格式化输出方式,输出想要的时间格式。
>>> from datetime import datetime
>>> now: datetime = datetime.now()
>>> print(f"{now}") # 2021-08-17 14:00:00.000000
2024-06-19 13:45:04.231588
>>> print(f"{now:%Y-%m-%d %H:%M:%S}") # %H是24小时制, %I是12小时制
2024-06-19 13:45:04
>>> print(f"{now:%Y-%m-%d %I:%M:%S %p}") # %p是AM/PM
2024-06-19 01:45:04 PM
>>> print(f"{now:%c}") # %c是本地日期和时间
Wed Jun 19 13:45:04 2024
4. 小数格式
对于浮点数,可以使用 .{数字}{格式}
的形式格式化,具体用法如下:
>>> n: float = 123456.78910
>>> print(f"{n:.2f}") # 可以发现,会四舍五入
123456.79
>>> print(f"{n:.2%}")
12345678.91%
>>> print(f"{n:.2e}")
1.23e+05
>>> print(f"{n:.0f}") # 去除小数部分,同时四舍五入
123457
>>> print(f"{n:,.2f}") # 可以结合千位分隔符
123,456.79
5. 直出结果
对于变量,可以在 f 字符串中使用 =
来不光输出变量的值,并且连带着输出变量名,方便调试与查看。
常规写法的缺点:
- 后续如果变量
var
的命名发生变化,则 f 字符串中将会有两处需要修改 - 只输出内容,不输出引号(输出更加干净,在平时输出时应该算是优点,但是在调试时反而不如
=
格式化输出更加鲜明)
>>> a: int = 5
>>> b: int = 10
>>> var: str = "Hello, World!"
>>> print(f"{a + b = }")
a + b = 15
>>> print(f"var = {var}") # 常规写法
var = Hello, World!
>>> print(f"{var = }")
var = 'Hello, World!'
参考资料:https://www.youtube.com/watch?v=EoNOWVYKyo0