Python字符串格式化详解:百分号与Format两种方式对比

小石头
小石头
发布时间:2026-10-13 | 3人浏览过
原创

本文深入解析Python中两种主要的字符串格式化方式:传统的百分号(%)方式与更现代的format方式。详细说明了百分号格式化的语法结构、对齐方式、宽度精度控制及各类类型码(s, r, c, o, x, d)的具体行为,并对比了format方式的多种传参技巧。文章通过代码示例展示了两种方法的实际效果,帮助开发者根据场景选择合适方案。

本文主要介绍Python中字符串格式化的两种核心实现方式,供开发者参考。

在字符串拼接场景中,特定格式化方式具有更优的性能表现。

Python支持两种字符串格式化路径:百分号(%)方式与format方式。

百分号方式是较早出现的机制,而format方式作为较新的标准,旨在逐步替代旧式写法,目前两者在代码中并存使用。

1、百分号(%)格式化方式

其基础语法格式为:%[(name)][flags][width].[precision]typecode

  • (name)为可选参数,用于指定要选取的字典键名。
  • flags为可选参数,具体可选值包括:
    • + 标志表示右对齐:正数前添加正号,负数前添加负号。
    • - 标志表示左对齐:正数前不添加符号,负数前添加负号。
  • width为可选参数,指定输出字符占用的最小宽度。
  • .precision为可选参数,指定小数点后保留的位数。
  • typecode为必选参数,用于定义数据类型转换规则。
    • s类型码:调用传入对象的__str__方法获取返回值,并按指定位置格式化输出。
    • r类型码:调用传入对象的__repr__方法获取返回值,并按指定位置格式化输出。
    • c类型码:将整数转换为对应的Unicode字符,有效范围限制在0 <= i <= 1114111(10进制)。
    • o类型码:将整数转换为八进制表示形式,并格式化到指定位置。
    • x类型码:将整数转换为16进制表示形式,并格式化到指定位置。
    • d类型码:将整数或浮点数转换为十进制表示形式,并格式化到指定位置。
>>> s = 'i am %s,age %d' %('cai',18)

>>> print(s)

i am cai,age 18

 

>>> s = 'i am %(n1)s,age %(n2)d' %{'n1':'cai','n2':18}

>>> print(s)

i am cai,age 18

 

>>> s = 'i am %(n1)+10s,age %(n2)d' %{'n1':'cai','n2':18}

>>> print(s)

i am    cai,age 18

 

>>> s = 'i am %(n1)+10s,age %(n2)10d' %{'n1':'cai','n2':18}

>>> print(s)

i am    cai,age     18

 

>>> s = "i am %.3f abcd" %1.2

>>> print(s)

i am 1.200 abcd 

2、format格式化方式

i1 = "i am {},age {} ,{}".format('cairui',18,'kk')

print(i1)

  i am cairui,age 18 ,kk

 

i1 = "i am {0},age {1} ,{0}".format('cairui',18)

print(i1)

  i am cairui,age 18 ,cairui

 

i1 = "i am {name},age {age} ,{name}".format(name='cairui',age=18)

print(i1)

  i am cairui,age 18 ,cairui

 

i1 = "i am {:s},age {:d} ,{:f}".format('cairui',18,6.1)

print(i1)

  i am cairui,age 18 ,6.100000 

以上内容为本文核心知识点,希望能为读者的学习提供实用帮助,欢迎继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表