Python format格式化输出详解:格式符、对齐与参数替换

叶初
叶初
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍Python中str.format()方法的多种用法,涵盖浮点数、整数、百分数及科学计数法等格式符,以及居中、左对齐、右对齐和字符填充等对齐方式。通过源码解析与实例,展示位置参数、关键字参数、集合下标及对象属性的替换技巧,帮助开发者掌握高效、灵活的字符串格式化技术。

前言

在Python 2.7及更高版本中,str.format()方法为字符串格式化提供了极大的便利。相较于传统的%型格式化字符串,这种方式更加便捷且功能强大。接下来我们将深入探讨format的具体用法。

常见用法概览

首先通过代码示例,直观展示format的一些常用功能。

print "{:.2f}".format(3.1415926) #3.14,保留小数点后两位
print "{:+.2f}".format(3.1415926) #+3.14 带符号保留小数点后两位
print "{:+.2f}".format(-10) #-10.00 带符号保留小数点后两位
print "{:+.0f}".format(-10.00) #-10 不带小数
print "{:0>2d}".format(1) #01 数字补零 (填充左边, 宽度为2)
print "{:x<2d}".format(1) #1x 数字补x (填充右边, 宽度为4)
print "{:x<4d}".format(10) #10xx 数字补x (填充右边, 宽度为4)
print "{:,}".format(1000000) #1,000,000 以逗号分隔的数字格式
print "{:.2%}".format(0.12) #12.00% 百分比格式
print "{:.2e}".format(1000000) #1.00e+06 指数记法
print "{:<10d}".format(10) #10 左对齐 (宽度为10)
print "{:>10d}".format(10) #  10 右对齐 (默认, 宽度为10)
print "{:^10d}".format(10) # 10 中间对齐 (宽度为10)

格式符类型

‘f'用于表示浮点数。

‘d'用于表示十进制整数,即以10为基数进行输出。

‘%'用于表示百分数,即将数值乘以100后以fixed-point('f')格式打印,并在末尾添加百分号。

‘e'用于表示幂符号,即使用科学计数法打印数字,其中'e'代表幂。

对齐与填充规则

符号^、<、>分别代表居中、左对齐和右对齐,其后需跟随宽度值。冒号:后跟随填充字符,且只能是一个字符,若未指定则默认使用空格。

基础字符串替换机制

在format中,字符串参数可以使用{num}的形式表示,其中0代表第一个参数,1代表第二个参数,依此类推。

为了更深入理解上述用法,我们先查看format的源码实现。

def format(self, *args, **kwargs): # known special case of str.format
  """
  S.format(*args, **kwargs) -> string

  Return a formatted version of S, using substitutions from args and kwargs.
  The substitutions are identified by braces ('{' and '}').
  """
  pass

以下是源码的中文翻译说明:

该方法使用args和kwargs进行替换,返回S的格式化版本。替换部分由大括号('{‘和'}')标识。

接下来通过实际例子进行演示:

print "{0} and {1} is good for big data".format("python","java")
print "{} and {} is good for big data".format("python","java")
print "{1} and {0} and {0} is good for big data".format("python","java")

运行代码后的输出结果如下:

python and java is good for big data
python and java is good for big data
java and python and python is good for big data

此外,还可以为参数指定名称:

print "{language1} is as well as {language2}".format(language1="python",language2="java")

其执行效果如下:

python is as well as java

通过集合下标方式访问

以下示例同样可以实现该目的:

languages = ["python","java"]
print "{0[0]} is as well as {0[1]}".format(languages)

最终输出效果:

python is as well as java

通过对象属性访问

format还经常用于处理对象属性,请看以下示例:

class Person(object):
 def __init__(self,name,age):
  self.name = name
  self.age = age

 def __str__(self):
  return "name is: {current.name}, age is: {current.age}".format(current=self)

p = Person("leilei",18)
print p

最终输出效果:

name is: leilei, age is: 18

以上关于Python format格式化输出方法的介绍到此结束,希望能为读者提供参考,也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。