Python中的格式化输出函数format()详解
在Python中,格式化输出是一种非常常用又非常方便的操作。其中,格式化输出函数format()是一种非常重要的工具,它可以根据需要将变量的值插入到字符串中,从而形成格式化的输出。实现格式化输出有很多种方法,但是format()函数是一种值得推荐使用的方法。
一、格式化输出的基本语法
使用format()函数进行格式化输出时,其基本语法如下所示:
print(format_string.format(arguments))
其中,format_string是需要被格式化的字符串,而arguments则是需要被插入到format_string中的变量(或常量)。
二、格式化输出的示例
下面我们来看几个具体的实例,以加深大家对这个函数的理解。
1. 格式化数字类型
示例代码如下:
num1 = 100
num2 = 3.14159
print("num1 = {0:d}; num2 = {1:.2f}".format(num1, num2))
上面这个例子中,{0:d}表示格式化整数类型的参数num1,而{1:.2f}则表示格式化浮点数类型的参数num2,其中.2f表示保留两位小数的格式。输出结果如下:
num1 = 100; num2 = 3.14
2. 格式化字符串类型
示例代码如下:
str1 = "Hello"
str2 = "world"
print("{0} {1}!".format(str1, str2))
上面这个例子中,{0}表示 个参数str1,{1}表示第二个参数str2。输出结果如下:
Hello world!
3. 格式化元祖类型
示例代码如下:
tup1 = (1, 2, 3)
tup2 = (4, 5, 6)
print("tup1 = {0}; tup2 = {1}".format(tup1, tup2))
上面这个例子中,{0}表示元祖类型的参数tup1,{1}表示元祖类型的参数tup2。输出结果如下:
tup1 = (1, 2, 3); tup2 = (4, 5, 6)
4. 格式化字典类型
示例代码如下:
dict1 = {'name': '张三', 'age': 18}
print("name = {0[name]}; age = {0[age]}".format(dict1))
上面这个例子中,{0[name]}表示字典类型的参数dict1中key为'name'的value,{0[age]}则表示字典类型的参数dict1中key为'age'的value。输出结果如下:
name = 张三; age = 18
三、format()函数的常用参数
除了上面提到的基本语法外,format()函数还支持多种参数,这里我们来一一解释。
1. 格式化参数
格式化参数用于指定插入到字符串中的变量的类型。常用的格式化参数有下面这些:
| 类型代码 | 类型 | 示例 |
| ---- | ------- | ---- |
| d | 十进制整数 | "{0:d}".format(10) # 输出: "10" |
| o | 八进制整数 | "{0:o}".format(10) # 输出: "12" |
| x | 小写十六进制 | "{0:x}".format(255) # 输出: "ff" |
| X | 大写十六进制 | "{0:X}".format(255) # 输出: "FF" |
| f | 定点小数 | "{0:f}".format(3.1415926) # 输出: "3.141593" |
| e | 科学计数法 | "{0:e}".format(100000) # 输出: "1.000000e+05" |
| E | 科学计数法(大写) | "{0:E}".format(100000) # 输出: "1.000000E+05" |
| g | 自动选择科学计数法或定点小数 | "{0:g}".format(3.1415926) # 输出: "3.14159" |
| % | 百分比形式 | "{0:.2%}".format(0.25) # 输出: "25.00%" |
2. 对齐参数
对齐参数用于指定插入的变量在字符串中的对齐方式。对齐参数有三个:"<"表示左对齐,">"表示右对齐,"^"表示居中对齐。对齐参数通常和宽度参数一起使用。
示例代码如下:
print("num1 = {0:<5d}; num2 = {1:>5.2f}; num3 = {2:^10s}".format(10, 3.14, "hello"))
上面这个例子中,"num1 = {0:<5d}"表示将 个参数num1插入到字符串中,并让其左对齐,并且宽度为5;"num2 = {1:>5.2f}"表示将第二个参数num2插入到字符串中,并让其右对齐,并且宽度为5,小数点后保留两位;"num3 = {2:^10s}"表示将第三个参数num3插入到字符串中,并让其居中对齐,并且宽度为10。
输出结果如下:
num1 = 10 ; num2 = 3.14; num3 = hello
3. 宽度参数
宽度参数用于指定插入的变量在字符串中所占的宽度。宽度参数后面可以跟上对齐参数和类型参数。具体用法如下:
print("{0:5d}".format(10)) # 输出: " 10"
print("{0:>5.2f}".format(3.14)) # 输出: " 3.14"
print("{0:^10s}".format("hello")) # 输出: " hello "
4. 变量名参数
变量名参数用于让format()函数去查找参数值时使用变量名而不是索引号。在这种情况下,需要在格式字符串中使用"{name}"这种形式来引用变量名。示例代码如下:
print("{name} is {age} years old.".format(name='张三', age=18))
上面这个例子中,通过变量名参数可以让我们的代码变得易于阅读和维护。输出结果如下:
张三 is 18 years old.
五、format()函数与字典对象的用法
在格式化输出中,有时候需要使用字典对象来代替参数变量。这种方法需要用到format_map()函数来代替format()函数。
示例代码如下:
class Person:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
p = Person("张三", 18, "男")
print("{0.name} is {0.age} years old and is a {0.sex}.".format_map(vars(p)))
上面这个例子中,通过使用vars()函数将Person对象p中的属性值存储到一个字典对象中,然后再将该字典对象传递给format_map()函数进行格式化输出。输出结果如下:
张三 is 18 years old and is a 男.
六、总结
format()函数是Python中用于格式化输出的主要工具之一,其功能非常强大,可以满足大多数格式化输出的需求。作为一名Python开发者,掌握这个函数的用法是非常重要的。
