详解Python 字符串格式化

  • Post category:Python

下面是Python字符串格式化的使用方法攻略。

什么是字符串格式化

在Python中,字符串格式化是指将一个或多个值插入到一个字符串中的占位符中。

例如,我们有一个字符串My name is {} and I am {} years old.,其中包含了两个占位符{}。我们可以使用字符串格式化将它们填充上具体的值,形成一个完整的字符串。

字符串格式化的主要优势是可以方便地动态生成字符串,而不需要手动拼接。

字符串格式化方法

Python提供了多种字符串格式化的方法,下面为大家介绍3种常用方法。

使用百分号(%)格式化字符串

这种方法最早也是最常用的一种字符串格式化方法。它使用百分号(%)作为占位符,类似于C语言中的printf函数。

占位符的基本使用

在字符串中使用百分号(%)指定占位符,然后在字符串末尾使用%运算符,指定要填充的值。

例如,我们可以使用下面的代码将一个整数和一个字符串插入到一个占位符中:

age = 18
name = 'Tom'
print('My name is %s and I am %d years old.' % (name, age)) # output: My name is Tom and I am 18 years old.

这个字符串中有两个占位符,第一个占位符使用%s表示要插入一个字符串,第二个占位符使用%d表示要插入一个整数。在%运算符的右侧,我们传入了两个值,分别是name和age。

占位符的高级使用

在使用%s和%d等基本占位符的同时,Python还支持使用其他类型的占位符,例如%f表示要插入一个浮点数,%x表示要插入一个十六进制整数等。

此外,我们还可以在占位符中使用一些修饰符,以进一步控制输出的格式。例如,我们可以使用%.2f表示保留两位小数的浮点数,%05d表示使用零填充的五位整数等。

下面的代码展示了一些常用的占位符和修饰符:

pi = 3.1415926
print('pi is %f' % pi) # pi is 3.141593
print('pi is %.2f' % pi) # pi is 3.14
print('pi is %10.2f' % pi) # pi is       3.14
print('pi is %-10.2f' % pi) # pi is 3.14      
print('age is %05d' % age) # age is 00018
print('age is %+d' % age) # age is +18

使用字典格式化字符串

我们可以使用字典来为占位符提供键值对,这样就可以更清晰地指定要插入的值。

例如,下面的代码使用字典将一个整数和一个字符串插入到一个占位符中:

person = {
    'name': 'Tom',
    'age': 18
}
print('My name is %(name)s and I am %(age)d years old.' % person) # output: My name is Tom and I am 18 years old.

在这个字符串中,占位符使用%(name)s和%(age)d表示要插入一个字符串和一个整数,而字典中的键值对则指定了要插入的具体值。

使用format方法格式化字符串

format方法是Python中的一种更加灵活和强大的字符串格式化方法。它使用一种类似于模板的方式来指定要插入的值。

基本使用

在使用format方法时,我们可以将要插入的值放在大括号{}中,并使用format方法传入这些值。

例如,下面的代码使用format方法将一个整数和一个字符串插入到一个占位符中:

age = 18
name = 'Tom'
print('My name is {} and I am {} years old.'.format(name, age)) # output: My name is Tom and I am 18 years old.

这个字符串中有两个占位符,都使用大括号{}表示,而在format方法的参数中,我们按照顺序传入了两个值,分别是name和age。

命名参数和位置参数

在使用format方法时,我们可以使用位置参数或命名参数来指定要插入的值。

例如,下面的代码使用命名参数将一个整数和一个字符串插入到一个占位符中:

print('My name is {name} and I am {age} years old.'.format(name=name, age=age)) # output: My name is Tom and I am 18 years old.

这个字符串中有两个占位符,分别使用{name}和{age}表示。在format方法的参数中,我们使用了两个命名参数,分别是name和age,将它们传入了占位符中。

另外,还可以使用位置参数的方式,将占位符与要插入的值进行对应。例如:

print('My name is {0} and I am {1} years old.'.format(name, age)) # output: My name is Tom and I am 18 years old.

在这个例子中,我们使用了两个位置参数,分别对应于字符串中的两个占位符。

使用命名参数进行高级格式化

在使用format方法时,我们可以使用格式化修饰符进行高级格式化。例如,我们可以使用{:.2f}来表示保留两位小数的浮点数,使用{:0>5d}来表示使用零填充的五位整数等。

pi = 3.1415926
print('pi is {:.2f}'.format(pi)) # pi is 3.14
print('age is {:0>5d}'.format(age)) # age is 00018

使用f字符串格式化字符串

Python 3.6以后支持了一种新的字符串格式化方式,即f字符串。f字符串是一种在字符串前面加上前缀f的字符串,其中插入的表达式将被动态地求值,并插入到字符串中。

例如,下面的代码使用f字符串将一个整数和一个字符串插入到一个占位符中:

age = 18
name = 'Tom'
print(f'My name is {name} and I am {age} years old.') # output: My name is Tom and I am 18 years old.

这个字符串中有两个占位符,都使用大括号{}表示,而在占位符中,则可以使用任何表达式,并将它们嵌入字符串中。

下面的代码展示了一些f字符串的高级使用:

pi = 3.1415926
print(f'pi is {pi:.2f}') # pi is 3.14

person = {
    'name': 'Tom',
    'age': 18
}
print(f"My name is {person['name']} and I am {person['age']} years old.") # output: My name is Tom and I am 18 years old.

总结

本篇攻略介绍了Python字符串格式化的主要使用方法,包括使用百分号(%)格式化字符串、使用format方法格式化字符串、使用f字符串格式化字符串等。在使用字符串格式化时,需要注意占位符的类型和修饰符,并多加注意数据类型的匹配。

希望本篇攻略对大家学习Python字符串格式化有所帮助。