Python字符串格式化详解:百分号与Format两种方式对比
本文深入解析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
以上内容为本文核心知识点,希望能为读者的学习提供实用帮助,欢迎继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









