轻松驾驭Python格式化:5个F-String实用技巧分享

F-String(格式化字符串字面值)是在Python 3.6中引入的,它是一种非常强大且灵活的字符串格式化方法。

它允许你在字符串中嵌入表达式,这些表达式在运行时会被求值并转换为字符串,

这种特性使得F-String在编写Python代码时能够更简洁、更直观地处理字符串。

本文总结了5个 实用的F-String技巧,相信一定能让你的代码输出更加的美观,清晰。

1. 大数字

Python的数据分析的项目中,经常接触到很大的数字,直接打印出大数字的话,很难看出它究竟有多少位。

python 复制代码
n = 100000000
print(n)
# 100000000

F-String来格式化,可以将大数字用千分位的形式显示出来。

python 复制代码
# 千分位的分隔符用 _ 或者 , 都可以

print(f"{n:_}")
# 100_000_000

print(f"{n:,}")
# 100,000,000

2. 浮点数

对于浮点数,除了可以用千分位分隔之外,还可以指定显示几位小数。

python 复制代码
n = 1234.5678
print(f"{n:.2f}")
# 1234.57

print(f"{n:.0f}")
# 1235

print(f"{n:,.3f}")
# 1,234.568

print(f"{n:_.3f}")
# 1_234.568

显示前会自动做四舍五入的计算。

3. 对齐

对齐不仅是让输出更加美观,更重要的是清晰,能够让我们更容易找到输出中的关键的信息。

比如,下面对齐输出namevalue

python 复制代码
name = "var"
value = 100

# >20 表示右对齐,并且占用20个字符的空间
print(f"{name:>20}: {value}")

# <20 表示左对齐,并且占用20个字符的空间
print(f"{name:<20}: {value}")

# ^20 表示居中对齐,并且占用20个字符的空间
print(f"{name:^20}: {value}")
复制代码
# 运行结果
                 var: 100
var                 : 100
        var         : 10

占用的20个字符的空间,包括var这个字符串,也就是说,占用的空间包含var17个空格。

F-String格式化输出时,默认是用空格来占位的,我们也可以定义自己的占位符。

python 复制代码
# 下面的例子分别用 _ # | 来占位
print(f"{name:_>20}: {value}")
print(f"{name:#<20}: {value}")
print(f"{name:|^20}: {value}")
复制代码
# 运行结果
_________________var: 100
var#################: 100
||||||||var|||||||||: 100

4. 日期

日期的格式化也是很常用的,python的日期格式化字符都可以在F-String中使用。

python 复制代码
from datetime import datetime

now = datetime.now()
print(f"{now:%Y-%m-%d (%H:%M:%S)}")
# 2024-03-12 (00:17:05)

print(f"{now:%c}")
# Tue Mar 12 00:17:05 2024

print(f"{now:%I%p}")
# 12AM

5. 变量描述

最后这个功能很有用,但估计没多少人知道。

所谓变量描述 ,也就是说在输出变量的时候,不仅输出变量的值,也输出变量的名字。

比如,一般我们输出变量是这样:

python 复制代码
a = 10
b = 20
s = "hello"

print(f"{a + b}")
# 30

print(f"{s}")
# hello

这样输出之后,我们不知道30hello是哪个变量的值。

所以,我们一般会像下面这样输出:

python 复制代码
print(f"a + b = {a + b}")
# a + b = 30

print(f"s = {s}")
# s = hello

F-String有个技巧,可以避免自己手动去输入变量的名字(比如上面的a + b =s =)。

python 复制代码
print(f"{a + b = }")
# a + b = 30

print(f"{s = }")
# s = hello

这样不仅简化的写代码,而且变量名称发生变化的时候,也可以减少修改的地方。

相关推荐
亿牛云爬虫专家16 分钟前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
蹦蹦跳跳真可爱5894 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij4 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien4 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫5 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_12206 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输7 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩7 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩8 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm
叶 落8 小时前
计算阶梯电费
python·python 基础·python 入门