python f_string(f-strings: Python字符串处理的瑞士军刀)
从 3.6 开始 ,Python 新增了一个格式化字符串的方法 ,称之为 f-string 。
其用法就是在python原始字符串的基础上增加 f/F 前缀 ,以大括号 {} 标明被替换的字段 。
f-string在本质上并不是字符串常量 ,而是一个在运行时运算求值的表达式。
变量嵌入 & 变量拼接
改变以往占位符或加号拼接的方式 ,使得字符串拼接更加简单直观 ,可读性也更好 。
name = "Tom" print(f"Im {name}") # Im Tom表达式求值
print(f"3 x 2 = {3*2}") # 3 x 2 = 6 print(f"{3 * 2 = }") # 3 * 2 = 6调用函数
name = "Tom" print(f"Im {name.lower()}") # Im tom多行string
name, job = "tom", "student" s = f"""Im {name.capitalize()}, and Im a {job.capitalize()}""" print(s) """ Im Tom, and Im a Student """对齐
先看下语法规则:
Syntax: {:[width][.precision][type]}对齐效果由width控制:
<:左对齐 >:右对齐(默认) :居中对齐 word = "python" >>> f"|{word:<10}|" |python | >>> f"|{word:>10}|" | python| >>> f"|{word:^10}|" | python |带有补全的对齐效果:
# 本例用小数点来补全空余内容 >>> f"|{word:.<10}|" |python....| >>> f"|{word:.>10}|" |....python| >>> f"|{word:.^10}|" |..python..|例子:
格式化一个日期 ,要求月份 、天数用两位表示 ,不足两位补0
year, month, day = 2022, 1, 1 >>> f"{year}-{month:0>2}-{day:0>2}" 2022-01-01数字格式化
Syntax: {:[width][.precision][type]}由precision指定精度 ,type对应数据类型 。
type:
s:字符串格式(默认) d:整型 e:科学计数,默认precision为6 f:浮点数 ,默认precision为6 %:百分比格式 ,默认浮点数格式,外加百分比格式化 浮点数精度格式化同时会自动四舍五入 。
pi = 3.141592654 print(f"PI = {pi:.2f}") # PI = 3.14 print(f"PI = {pi:.3f}") # PI = 3.142 科学计数 print(f"{pi:e}") # 3.141593e+00 print(f"{pi:.2e}") # 3.14e+00 百分比格式化兼顾小数位保留和百分号格式化功能 。
print(f"PI = {pi:.3%}") # PI = 314.159% print(f"PI = {pi:.2%}") # PI = 314.16% 千位分隔符使用 , 格式化数字展示(常用于金额) ,易于阅读
>>> f"{234234234:,}" 234,234,234 >>> f"{234234234.1314:,.2f}" 234,234,234.13进制转换
先看看python中常用的用法及其效果:
num = 23 bin(num) # 0b10111 oct(num) # 0o27 hex(num) # 0x17在f-string中 ,b 、o、d 、x分别代表二进制 、八进制 、十进制 、十六进制
f"{num:b}" # 10111 f"{num:o}" # 27 f"{num:d}" # 23 f"{num:x}" # 17要想实现常用用法的效果,进制规则代码前需要加#号:
f"{num:#b}" # 0b10111 f"{num:#o}" # 0o27 f"{num:#d}" # 23 f"{num:#x}" # 0x17lambda表达式
>>> f"result is {(lambda x: x**2+1)(5)}" result is 26日期格式化
日期格式信息 ,适用于 date 、datetime 和 time 对象
today = datetime.datetime.today() f"{today:%Y}" # 2022 f"{today:%Y-%m}" # 2022-12 f"{today:%Y-%m-%d}" # 2022-12-16 f"{today:%F}" # 2022-12-16 f"{today:%D}" # 12/16/22 f"{today:%X}" # 21:01:27 f"{today:%F %X}" # 2022-12-16 21:01:27参考
python docs: Formatted string literals PEP 498 – Literal String Interpolation A Guide to Formatting with f-strings in Python A Simple Guide to String Formatting in Python Using f-strings创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!