欢迎访问宙启技术站
智能推送

Python中的格式化输出函数format()详解

发布时间:2023-06-21 07:22:59

在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开发者,掌握这个函数的用法是非常重要的。