1. 什么是format函数?
在Python中,我们经常需要将变量、数据等以一定的格式输出到控制台或者写入文件中,这时就可以使用字符串格式化函数。
Python中常用的字符串格式化函数包括:
百分号(%)格式化字符串
str.format()方法格式化字符串
f-string格式化字符串(Python3.6及以上版本)
本文主要介绍format函数。
2. format函数的基本用法
format函数是一种更加灵活、可读性更强的字符串格式化方式,它将数据与格式混合在一起,使得代码更加简洁易懂。
format函数的基本用法是:
format_string.format(arguments)
其中,format_string为格式化的字符串,arguments为需要格式化的变量、表达式或者值。
下面是一个简单的示例:
name = 'Jack'
age = 20
print('My name is {}, and I am {} years old.'.format(name, age))
输出结果为:
My name is Jack, and I am 20 years old.
在格式化字符串中,用一对花括号{}表示要替换的位置,可以用多对花括号{}来表示不同的位置,然后通过参数的位置来指定需要替换的位置。
在上面的示例中,字符串"My name is {}, and I am {} years old."中有两个花括号{},分别表示需要替换的位置,第一个{}需要替换成name,第二个{}需要替换成age。
在调用format函数时,需要将需要替换的变量、表达式或者值作为参数传递给format函数,format函数将会按照花括号{}的位置将字符串中的{}依次替换成相应的参数,从而得到格式化后的字符串。
3. format函数的进阶用法
3.1 通过索引指定参数
除了按照参数的位置来指定参数之外,还可以通过索引来指定参数。
在格式化字符串中,用一对花括号{}表示要替换的位置,可以在花括号{}中指定参数的索引,从而通过索引来指定参数。
下面是一个示例:
name = 'Jack'
age = 20
print('My name is {0}, and I am {1} years old.'.format(name, age))
输出结果为:
My name is Jack, and I am 20 years old.
在上面的示例中,通过在花括号{}中指定参数的索引,{0}表示第一个参数name,{1}表示第二个参数age,从而指定了参数的顺序。
3.2 通过关键字指定参数
除了按照参数的位置或者索引来指定参数之外,还可以通过关键字来指定参数。
在格式化字符串中,用一对花括号{}表示要替换的位置,可以在花括号{}中指定参数的关键字,从而通过关键字来指定参数。
下面是一个示例:
name = 'Jack'
age = 20
print('My name is {name}, and I am {age} years old.'.format(name=name, age=age))
输出结果为:
My name is Jack, and I am 20 years old.
在上面的示例中,通过在花括号{}中指定参数的关键字,{name}表示name变量,{age}表示age变量,从而指定了参数的值。
3.3 格式化指定参数类型
通过format函数,可以对不同类型的参数进行不同的格式化。
3.3.1 格式化整数类型
格式化整数类型的参数时,可以使用以下转换符。
转换符 | 含义 | 示例 | 结果 |
---|---|---|---|
d | 十进制整数 | {} | 42 |
x | 十六进制整数(小写字母) | {:x} | 2a |
X | 十六进制整数(大写字母) | {:X} | 2A |
o | 八进制整数 | {:o} | 52 |
b | 二进制整数 | {:b} | 101010 |
下面是一个示例:
x = 42
print('x = {}, hex = {:x}, oct = {:o}, bin = {:b}'.format(x, x, x, x))
输出结果为:
x = 42, hex = 2a, oct = 52, bin = 101010
3.3.2 格式化浮点数类型
格式化浮点数类型的参数时,可以使用以下转换符。
转换符 | 含义 | 示例 | 结果 |
---|---|---|---|
f | 浮点数(小数点后保留6位) | {} | 3.141593 |
e | 科学计数法(小写e) | {:e} | 3.141593e+00 |
E | 科学计数法(大写E) | {:E} | 3.141593E+00 |
g | 自动选择(大数使用科学计数法) | {:g} | 0.0003141593 |
G | 自动选择(大数使用科学计数法) | {:G} | 0.0003141593 |
% | 百分数(小数点后保留6位) | {:%} | 314.159300% |
下面是一个示例:
pi = 3.1415926
print('pi = {}, e = {:.2e}, pi + e = {:.3g}'.format(pi, 2.718, pi + 2.718))
输出结果为:
pi = 3.1415926, e = 2.72e+00, pi + e = 5.86
3.3.3 格式化字符串类型
格式化字符串类型的参数时,可以使用以下转换符。
转换符 | 含义 | 示例 | 结果 |
---|---|---|---|
s | 字符串 | {} | hello, world |
下面是一个示例:
s = 'hello, world'
print('s = {:s}, s upper = {:s}'.format(s, s.upper()))
输出结果为:
s = hello, world, s upper = HELLO, WORLD
4. format函数的高级用法
4.1 对齐格式化
使用format函数,可以对字符串进行对齐格式化。在花括号中指定对齐方式和宽度。
4.1.1 左对齐
使用花括号中的"-"来指定左对齐格式,并在花括号中指定宽度。
下面是一个示例:
name = 'Jack'
age = 20
print('My name is{:<10}, and I am {:<5} years old.'.format(name, age))
输出结果为:
My name is Jack , and I am 20 years old.
在上面的示例中,对name和age变量使用左对齐格式化,并设置宽度分别为10和5。
4.1.2 右对齐
使用花括号中的">"来指定右对齐格式,并在花括号中指定宽度。
下面是一个示例:
name = 'Jack'
age = 20
print('My name is{:>10}, and I am {:>5} years old.'.format(name, age))
输出结果为:
My name is Jack, and I am 20 years old.
在上面的示例中,对name和age变量使用右对齐格式化,并设置宽度分别为10和5。
4.1.3 居中对齐
使用花括号中的"^"来指定居中对齐格式,并在花括号中指定宽度。
下面是一个示例:
name = 'Jack'
age = 20
print('My name is{:^10}, and I am {:^5} years old.'.format(name, age))
输出结果为:
My name is Jack , and I am 20 years old.
在上面的示例中,对name和age变量使用居中对齐格式化,并设置宽度分别为10和5。
4.2 使用千位分隔符
在数字类型的参数中,可以使用千位分隔符进行格式化。
使用花括号中的","来指定千位分隔符格式。
下面是一个示例:
x = 1234567.89
print('{:,.2f}'.format(x))
输出结果为:
1,234,567.89
在上面的示例中,使用千位分隔符对x变量进行格式化,并设置小数点后保留两位。
4.3 使用变量名作为格式化参数
在给format函数传递参数时,可以使用变量名来指定参数的值,从而使得代码更加清晰易懂。
变量名可以是字符串、数字、下划线组成的任意命名,但不能以数字开头。
下面是一个示例:
person = {'name': 'Jack', 'age': 20}
print('My name is {person[name]}, and I am {person[age]} years old.'.format(person=person))
输出结果为:
My name is Jack, and I am 20 years old.
在上面的示例中,使用变量名person指定参数的值,然后在格式化字符串中通过person[name]和person[age]来访问person变量中的属性值。
4.4 使用format_map函数动态生成参数
在给format函数传递参数时,如果参数是一个字典,可以使用format_map函数动态生成参数。
format_map函数的参数是一个字典,格式化字符串中使用花括号{}和key来引用字典中的值。
下面是一个示例:
person = {'name': 'Jack', 'age': 20}
print('My name is {name}, and I am {age} years old.'.format_map(person))
输出结果为:
My name is Jack, and I am 20 years old.
在上面的示例中,使用format_map函数动态生成参数,方便快捷。
5. 总结
通过本文的介绍,我们了解了format函数的基本用法和高级用法,包括索引、关键字、不同类型的参数格式化、对齐格式化、千位分隔符格式化、变量名作为格式化参数和format_map函数动态生成参数。
使用format函数能够方便地对字符串进行格式化,让代码更加清晰易懂,提高了代码的可读性。