Python格式化:让数据输出更优雅

Python格式化:让数据输出更优雅

Python的格式化功能能让数据输出瞬间变得优雅又规范。不管是对齐文本、控制数字精度,还是动态填充内容,它都能轻松搞定。

一、基础格式化:从简单拼接开始

1. 百分号(%)格式化

在Python中,百分号格式化是一种传统的字符串格式化方式,通过占位符来指定输出的格式。常用的占位符有%s(字符串)、%d(整数)、%f(浮点数)。

复制代码
name = "Alice"
age = 25
print("我的名字是%s,今年%d岁。" % (name, age))
#输出:我的名字是 Alice,今年 25 岁。

核心要点

  • 占位符的数量和类型要与后面元组中的变量一一对应。

  • 对于浮点数,可以使用%.nf指定小数位数,例如%.2f表示保留两位小数。

2. format () 方法

format()方法是一种更灵活强大的格式化方式,通过花括号 {}作为占位符,可以按位置、关键字或索引来填充内容。

复制代码
name = "Bob"
age = 30
print("我的名字是{},今年{}岁。".format(name, age))
# 按位置指定
print("{1}比{0}大5岁。".format(name, "Charlie"))
# 按关键字指定
print("我叫{name},今年{age}岁。".format(name="David", age=35))

#输出:
我的名字是Bob,今年30岁。
Charlie比Bob大5岁。
我叫David,今年35岁。

3. f-string(格式化字符串字面值)

Python3.6引入的f-string 是最简洁直观的格式化方式,在字符串前加f,直接在花括号内嵌入表达式。

复制代码
name = "Ella"
age = 28
print(f"我的名字是{name},今年{age}岁。")
# 可以在花括号内进行运算
print(f"明年我就{age + 1}岁了。")
#输出:
我的名字是Ella,今年28岁。
明年我就29岁了。

二、进阶格式化

1. 对齐与填充

在输出表格或固定格式文本时,常常需要对齐数据。通过:<(左对齐)、:>(右对齐)、:^(居中对齐)配合填充字符实现。

复制代码
# 左对齐,用空格填充
print("{:<10}".format("苹果"))
print("{:10}".format("苹果"))
# 右对齐,用空格填充
print("{:>10}".format("香蕉"))
# 居中对齐,用空格填充
print("{:^10}".format("橙子"))
#输出:
苹果        
苹果        
        香蕉
    橙子    

用其他字符填充:

复制代码
# 左对齐,用 * 填充
print("{:*<10}".format("苹果"))
# 右对齐,用 - 填充
print("{:->10}".format("橙子"))
# 居中对齐,用 # 填充
print("{:#^10}".format("香蕉"))

#输出:
苹果********
--------橙子
####香蕉####

2. 数字格式化

对于数字,可以控制小数位数、千位分隔符、进制表示等。

复制代码
num = 12345.6789
# 保留两位小数
print("{:.2f}".format(num))
# 添加千位分隔符
print("{:,}".format(num))
# 二进制表示
print("{:b}".format(10))
# 八进制表示
print("{:o}".format(10))
# 十六进制表示 小写字母
print("{:x}".format(10))
# 十六进制表示 大写字母
print("{:X}".format(10))

#输出:
12345.68
12,345.6789
1010
12
a
A

3. 日期与时间格式化

结合datetime模块,格式化日期和时间字符串。

复制代码
from datetime import datetime
now = datetime.now()
# 常见日期格式
print(now.strftime("%Y-%m-%d %H:%M:%S"))
# 自定义格式
print(now.strftime("今天是%Y年%m月%d日,星期%a"))

#输出:
2025-04-2222:49:14
今天是2025年04月22日,星期Tue

三、实用案例展示

案例 1:制作数据统计表

在数据分析中,格式化可以让结果展示更清晰。

复制代码
data = {
"产品A": 1234.56,
"产品B": 7890.12,
"产品C": 567.89
}
print("| 产品 | 销售额 |")
print("|------|--------|")
for product, amount in data.items():
	print(f"| {product} | {amount:,.2f} |")

#输出:
| 产品 | 销售额 |
|------|--------|
| 产品A |1,234.56|
| 产品B | 7,890.12 |
| 产品C |567.89|

案例 2:生成个性化邀请函

利用 f-string 快速生成批量邀请函。

复制代码
guests = ["Frank", "Grace", "Hank"]
for guest in guests:
  print(f"{guest}先生/女士:\n 诚邀您参加我们的晚会!")

#输出:
Frank先生/女士:
诚邀您参加我们的晚会!
Grace先生/女士:
诚邀您参加我们的晚会!
Hank先生/女士:
诚邀您参加我们的晚会!

案例 3:文件命名中的动态格式化

在批量处理文件时,根据时间或序号格式化文件名。

复制代码
import datetime
now = datetime.datetime.now()
file_name = f"report_{now.strftime('%Y%m%d%H%M%S')}.txt"
print(file_name)
#输出:report_20241231143000.txt

四、闭坑指南

占位符与变量不匹配

  • 错误操作

    :百分号格式化中占位符数量、类型与变量不一致。

    错误:少一个变量

    print("姓名:%s,年龄:%d" % ("Leo"))

  • 解决方法

    :仔细检查占位符和变量的对应关系,使用format()或 f-string 可减少此类错误。

花括号转义问题

  • 错误操作

    :在 f-string中想输出花括号却被解析为占位符。

    错误:会报错

    print(f"这是一个{括号}")

  • 解决方法

    :使用双花括号{{}}进行转义。

    print(f"这是一个{{括号}}") # 输出:这是一个{括号}

格式化语法混淆

  • 错误操作

    :混用不同格式化方式的语法。

    错误:format()方法不能用百分号占位符

    print("{}.format("错误示范") % "示例")

  • 解决方法

    :明确每种方式的规则,推荐优先使用 f-string,简洁且不易出错。

五、总结回顾

从基础的字符串拼接,到复杂的数字、日期处理,再到个性化场景应用,掌握这些格式化技巧能让你的程序输出更专业、更美观。下次遇到数据展示问题,不妨试试!

相关推荐
思则变1 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络2 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find3 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取4 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector5 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习6 小时前
Python入门Day2
开发语言·python
Vertira6 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉6 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗6 小时前
黑马python(二十四)
开发语言·python
晓13137 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr