当前位置:首页 > Python > 正文

Python format方法格式化输出列表教程 | Python字符串格式化技巧

Python format方法格式化输出列表

全面指南:从基础到高级技巧

为什么需要格式化输出列表?

在Python编程中,我们经常需要将列表数据以更美观、易读的方式展示给用户。使用format()方法可以轻松实现:

  • 控制数字精度和格式
  • 对齐文本和数字
  • 添加千位分隔符
  • 自定义列表项的显示方式
  • 创建专业的数据报告

基础用法:格式化单个列表

简单列表格式化

# 基本列表格式化
numbers = [12, 45, 78, 34, 56]
formatted = ", ".join("{:03d}".format(num) for num in numbers)
print(formatted)  # 输出: 012, 045, 078, 034, 056

这里我们使用"{:03d}"格式说明符,确保每个数字都显示为三位数(不足前面补零)。

带标题的列表格式化

# 带标题的格式化
fruits = ["Apple", "Banana", "Cherry", "Date"]
formatted = "\n".join("{:<10} {:>5}".format(fruit, f"${len(fruit)*1.5:.2f}") for fruit in fruits)
print("水果列表:\n" + formatted)

输出结果:

水果列表:
Apple      $7.50
Banana     $9.00
Cherry     $7.50
Date       $6.00

高级技巧

格式化嵌套列表

# 嵌套列表格式化
students = [
    ["Alice", 92.5, 4.0],
    ["Bob", 87.3, 3.7],
    ["Charlie", 95.1, 4.0],
    ["Diana", 78.9, 3.4]
]

header = "{:<10} {:>10} {:>10}".format("姓名", "平均分", "GPA")
divider = "-" * 35
rows = "\n".join(
    "{:<10} {:>10.1f} {:>10.1f}".format(name, score, gpa) 
    for name, score, gpa in students
)

print(f"{header}\n{divider}\n{rows}")

输出结果:

姓名            平均分        GPA
-----------------------------------
Alice           92.5        4.0
Bob             87.3        3.7
Charlie         95.1        4.0
Diana           78.9        3.4

数字格式化技巧

# 数字格式化示例
data = [1234.5678, 98765.4321, 123.456, 7890.12]

print("科学计数法:")
print("\n".join("{:.3e}".format(x) for x in data))

print("\n千位分隔符:")
print("\n".join("{:,.2f}".format(x) for x in data))

print("\n百分比显示:")
print("\n".join("{:.1%}".format(x/10000) for x in data))

输出结果:

科学计数法:
1.235e+03
9.877e+04
1.235e+02
7.890e+03

千位分隔符:
1,234.57
98,765.43
123.46
7,890.12

百分比显示:
12.3%
987.7%
1.2%
78.9%

format格式说明符详解

格式说明符 描述 示例 输出
{:d} 整数 format(42, "d") 42
{:.2f} 保留两位小数 format(3.14159, ".2f") 3.14
{:>10} 右对齐(宽度10) format("text", ">10") text
{:^10} 居中对齐(宽度10) format("text", "^10") text
{:,>10d} 带千位分隔符 format(1234567, ",d") 1,234,567
{:.2%} 百分比格式 format(0.875, ".2%") 87.50%

实际应用:销售报告生成

# 销售报告生成示例
sales_data = [
    ["产品A", 125, 249.99],
    ["产品B", 89, 159.50],
    ["产品C", 204, 99.95],
    ["产品D", 47, 499.00]
]

# 生成报告标题
title = "{:^50}".format("2023年第四季度销售报告")
header = "{:<15} {:>10} {:>15} {:>15}".format("产品", "销量", "单价", "销售额")
divider = "=" * 60

# 生成报告内容
rows = []
total_sales = 0
for product, units, price in sales_data:
    sales = units * price
    total_sales += sales
    rows.append("{:<15} {:>10} {:>15.2f} {:>15,.2f}".format(
        product, units, price, sales
    ))

# 添加总计行
footer = "{:<15} {:>10} {:>15} {:>15,.2f}".format(
    "总计", sum(u for _, u, _ in sales_data), "", total_sales
)

# 打印报告
report = "\n".join([title, header, divider] + rows + [divider, footer])
print(report)

输出结果:

              2023年第四季度销售报告              
产品                  销量            单价          销售额
============================================================
产品A                  125          249.99       31,248.75
产品B                   89          159.50       14,195.50
产品C                  204           99.95       20,389.80
产品D                   47          499.00       23,453.00
============================================================
总计                   465                      89,287.05

© 2023 Python格式化教程 | 掌握format方法,提升代码输出质量

发表评论