Python format格式化输出详解:格式符、对齐与参数替换
本文详细介绍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格式化输出方法的介绍到此结束,希望能为读者提供参考,也欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









