首页IT科技python f_string(f-strings: Python字符串处理的瑞士军刀)

python f_string(f-strings: Python字符串处理的瑞士军刀)

时间2025-06-14 09:25:49分类IT科技浏览3952
导读:从 3.6 开始,Python 新增了一个格式化字符串的方法,称之为 f-string。...

从 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}" # 0x17

lambda表达式

>>> 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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
文章的改写(了解文章改写,提升内容创作效率!) 香港服务器有什么弊端?(香港服务器租用有什么优缺点)