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

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

时间2025-09-19 17:34:50分类IT科技浏览5406
导读:从 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
python列表怎么添加数据(python列表数据如何增加和删除)