网站首页 > 技术文章 正文
上一篇文章我们介绍了4种字符串格式化方法,其中最现代、最直观的方式是f-string,从Python 3.6开始引入,而且时不时就增加一些超级优雅的小改进。今天,钢铁老豆想要继续给大家展开介绍不同数据类型的格式化选项,以f-string为例,同样适用于其他格式化方法。
0.f-string简介
f-string,或称为格式化字符串字面值,是一种在字符串前加上 `f` 或 `F` 前缀的新语法。通过这种方式,您可以直接在字符串中嵌入表达式,并在运行时计算这些表达式的值。它不仅提高了代码的可读性,还加快了字符串处理的速度。
1.基本用法
使用 f-string 非常简单。只需在字符串前加上字母 `f`,并将表达式放在大括号 `{}` 中。
name = "张三"
age = 30
print(f"你好,{name},你明年就{age + 1}岁了。") # 你好,张三,你明年就31岁了。
除了基本的变量外,你还可以在花括号里调用函数、访问字典、执行算术运算等。
data = {'name': '赵六', 'job': '工程师'}
print(f"{data['name']} 是一名 {data['job']}")
2.格式化选项
下面,让钢铁老豆更详细地介绍 Python f-string 的各种格式化选项,满足不同数据类型的需求。
2.1 数字格式化
整数和浮点数
- 定制小数点位数:使用 `:.nf` 格式,其中 `n` 代表小数点后的位数。
number = 3.14159
print(f"{number:.3f}") # 输出 3.142
- 定制总宽度和小数点位数:使用 `:m.nf`,`m` 为总宽度,`n` 为小数点位数。
number = 3.14159
print(f"{number:10.3f}") # 宽度为10,小数点后3位
- 使用千位分隔符:使用 `:,` 可以为大数字添加千位分隔符。
number = 1234567.89
print(f"{number:,}") # 输出 1,234,567.89
进制转换
- 十六进制:使用 `:x` 或 `:X`。
number = 255
print(f"{number:x}") # 输出 ff
- 八进制:使用 `:o`。
number = 255
print(f"{number:o}") # 输出 377
- 二进制:使用 `:b`。
number = 255
print(f"{number:b}") # 输出 11111111
百分比格式化
- 百分比:使用 `:%` 或 `:.nf%` 格式化为百分比形式,`n` 定义小数位数。
fraction = 0.123
print(f"{fraction:.1%}") # 输出 12.3%
2.2 字符串格式化
- 对齐:使用 `:<` 左对齐,`:>` 右对齐,`:^` 居中对齐。
name = "Alice"
print(f"{name:>10}") # 右对齐,宽度为10
- 填充:在对齐字符前添加填充字符。
name = "Alice"
print(f"{name:*^10}") # 使用*填充,居中对齐
- 截断:使用 `.n` 限制字符串长度,其中 `n` 是最大字符数。
text = "Hello World"
print(f"{text:.5}") # 输出 Hello
3.自定义对象格式化
如果对象实现了 `__format__` 方法,f-string 也可以使用指定的格式代码来格式化该对象。每当格式化一个对象时(例如,使用`format()`函数或在f-string中引用),Python会查找该对象的`__format__`方法。该方法接收一个格式说明符作为参数,这个说明符可以是空字符串,或是任何有效的格式代码,您可以在方法内部解释并应用这些代码。
例如,如果您正在设计一个财务相关的类,可能会想允许用户根据不同的货币或会计需求选择不同的显示格式:
class Money:
def __init__(self, amount):
self.amount = amount
def __format__(self, format_spec):
if format_spec == 'usd':
return f"${self.amount:.2f}"
elif format_spec == 'eur':
return f"EUR{self.amount:.2f}"
elif format_spec == 'clean':
return f"{self.amount:.2f}"
else:
# 默认为美元格式
return f"${self.amount:.2f}"
# 使用自定义格式
money = Money(1234.5)
print(f"{money}") # $1234.50
print(f"{money:'eur'}") # EUR1234.50
print(f"{money:'clean'}") # 1234.50
这除了增强类的自描述性和灵活性,还可以使对象的字符串表示形式更加友好和符合场景需求。这在创建API、框架或任何需要用户与您的对象进行交互的应用程序时特别有用。
好了,以上就是不同数据类型常见的格式化选项,f-string 不仅使用简单,而且非常强大和灵活。
欢迎点赞+收藏+评论+关注,每天学习一点Python小知识,无论基础、模块、数据分析、深度学习和Ai,总有你感兴趣的。我是钢铁老豆,一个30岁转行IT、自学成为算法工程师、想用Ai点亮孩子小小世界的Pythoner。
猜你喜欢
- 2025-06-18 Python小游戏——“石头剪刀布”(python石头剪刀布游戏怎么写)
- 2025-06-18 3.2数据类型和变量赋值(JAVA程序员改行Python当天入门教程)
- 2025-06-18 GESP第六次认证真题解析C++、Python直播预告
- 2025-06-18 每周一个 Python 模块 | fnmatch(python一周的星期几)
- 2025-06-18 fsociety,一个非常厉害的 Python 库!
- 2025-06-18 python学习笔记之f-string,小白的成长历程
- 2025-06-18 在 Python 中使用 f-String 格式化字符串
- 2025-06-18 如何使用 Python 的 f-string 进行字符串格式化
- 2025-06-18 Python中f-string用法(for char in python string)
- 2025-06-18 python中format函数和f-string详解
- 07-06Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- 07-06python入门-day5-循环语句(python循环语句总结)
- 07-06Python循环:重复的力量(python中如何重复循环程序)
- 07-06编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- 07-06python 简述列表推导式和生成器(python列表举例)
- 07-06Python列表推导式:让你的代码优雅如诗!
- 07-06Python中while循环详解(python中while循环的执行过程)
- 07-06Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 274℃Python短文,Python中的嵌套条件语句(六)
- 272℃python笔记:for循环嵌套。end=""的作用,图形打印
- 270℃PythonNet:实现Python与.Net代码相互调用!
- 265℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 265℃Python实现字符串小写转大写并写入文件
- 124℃原来2025是完美的平方年,一起探索六种平方的算吧
- 106℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 104℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- python入门-day5-循环语句(python循环语句总结)
- Python循环:重复的力量(python中如何重复循环程序)
- 编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- python 简述列表推导式和生成器(python列表举例)
- Python列表推导式:让你的代码优雅如诗!
- Python中while循环详解(python中while循环的执行过程)
- Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 用while循环做一个九九乘法表(用while循环和for循环分别输出九九乘法表)
- 怎么用三种代码写「九九乘法表」(九九乘法表的代码怎么写)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)