Python很早就引入了一种称为 f-string 的字符串格式化方法,它代表格式化字符串字面值。多年过去了,f-string 也成为了python 中应用最广泛的字符串格式化方法。这比其他字符串格式化方法更快,更易读、易用,下面将介绍相关使用技巧。
1. 调试模式
首先就是 f-string 的调试功能,这可以让我们使用
在 f-string 的调试中,还可以执行数学运算,就像在最后一行中看到的那样。
x = 10 y = 20 print(f"x = {x}, y = {y}") # 原方式 print(f"{x = }, {y = }") # 调试模式 # math operations print(f"{x * y = }")
输出:
x = 10, y = 20 x = 10, y = 20 x * y = 200
可以看到使用调试模式减少了代码量,同时输出的内容是一致的。
2.格式化数字
可以用数字进行各种格式化/转换,下面是一些示例:
-
设置小数位数(精度):使用
:.nf ,其中n 是小数位数 -
十六进制转换
-
二进制转换
-
八进制转换
-
科学计数法
-
使用前导零填充数字:使用
:0n ,其中n 是总字符数
number = 420 # decimal places # 设置精度 print(f"number: {number:.2f}") # hex conversion # 十六进制转换 print(f"hex: {number:#0x}") # binary conversion # 二进制转换 print(f"binary: {number:b}") # octal conversion # 八进制转换 print(f"octal: {number:o}") # scientific notation # 科学计数法 print(f"scientific: {number:e}") # total number of characters # 填充前导0 print(f"Number: {number:09}")
number: 420.00 hex: 0x1a4 binary: 110100100 octal: 644 scientific: 4.200000e+02 Number: 000000420
假设有一个像苹果市值那样大的数字,你可以使用
apple_marketcap = 2.626 * 10e12 print(f"{apple_marketcap = :,}") # comma separator percentage = 10.394394 print(f"{percentage = :.2%}") # percentage
输出:
apple_marketcap = 26,260,000,000,000.0 percentage = 1039.44%
3.日期格式化
如果想格式化日期,可以创建一个示例日期时间值。就像在应用程序中格式化日期一样,可以在 f-string 中定义你想要的格式,例如
下面将一个 UTC 日期时间格式化为:
-
没有微秒
-
仅日期
-
仅时间
-
带上午/下午的时间
-
24 小时格式
import datetime today = datetime.datetime.utcnow() print(f"datetime : {today} ") print(f"date time: {today:%m/%d/%Y %H:%M:%S}") # 没有微秒 print(f"date: {today:%m/%d/%Y}") # 仅日期 print(f"time: {today:%H:%M:%S.%f}") # 仅时间 print(f"time: {today:%H:%M:%S %p}") # 时间带上上午/下午 print(f"time: {today:%H:%M}") # 24小时制时间
输出:
datetime : 2022-09-13 05:44:17.546036 date time: 09/13/2022 05:44:17 date: 09/13/2022 time: 05:44:17.546036 time: 05:44:17 AM time: 05:44
还可以使用格式化选项做更多事情,下面是如何从日期中获取星期几和一年中的第几天,还有计算已经过了一年的多少天。
# Locale’s appropriate date and time representation print(f"locale appropriate: {today:%c}") # weekday print(f"weekday: {today:%A}") # 获取当前日期是星期几 # day of the year print(f"day of year: {today:%j}") # 获取当前日期是一年中的第几天 # how far are we into the year? day_of_year = f"{today:%j}" # 获取本年度已过去时间(百分比) print(f"progress % year: {int(day_of_year)/365 * 100:.2f}%")
输出:
locale appropriate: Tue Sep 13 05:44:17 2022 weekday: Tuesday day of year: 256 progress % year: 70.14%
4.对齐
如果你希望将变量打印在特定位置,可以使用对齐方式!
number = 4 print(f"number is {number:4}") # width of 10 # numbers for number in range(1, 5): print(f"the number is {number:{number}}") left = "left text" center = "center text!" right = "right text" print(f"{left:>20}") # left align print(f"{center:^20}") # center align print(f"{right:<20}") # right align print(f"{left : <20}{center : ^20}{right : >20}")
输出:
number is 4 the number is 1 the number is 2 the number is 3 the number is 4 left text center text! right text left text center text! right text
注意第一个 print 中的
在
在
如果将三个字符串及其格式化选项放在一起,将有一个宽度为60的空间来放置左、中、右字符串变量。
综上所述,通过以上内容的介绍,相信大家对 f-string 又有了更深的认识,这会给以后的学习和工作提供帮助。