Python 格式化字符串

引言
在编程中,我们经常需要将变量或数据以特定的格式呈现出来,以便更好地理解和展示。Python 提供了丰富的字符串格式化方法,可以灵活地处理字符串的格式和输出。本文将详细介绍 Python 中的格式化字符串,包括字符串插值、格式化操作符 %、format() 方法以及 f-string 的用法。
字符串插值
字符串插值是一种直接将变量嵌入到字符串中的简单方法。在 Python3.6 以后的版本中,可以使用 f-string 来实现字符串插值。f-string 是一种简洁、直观的字符串格式化方式,以 {} 作为占位符,其中可以包含变量或表达式。
下面是一个简单的示例:
name = "Alice"
age = 25
print(f"My name is {name} and I'm {age} years old.")
输出结果:
My name is Alice and I'm 25 years old.
在 f-string 中,大括号 {} 内的内容将会被变量的值替换。
格式化操作符 %
格式化操作符 % 是一种传统的字符串格式化方法,在 Python2.x 版本中被广泛使用。虽然在 Python3.x 版本中也仍然可用,但不再推荐使用。这种方法使用 % 运算符将变量的值插入到字符串中。
下面是一个使用格式化操作符的示例:
name = "Bob"
age = 30
print("My name is %s and I'm %d years old." % (name, age))
输出结果:
My name is Bob and I'm 30 years old.
在这个示例中,字符串中的 %s 是一个占位符,表示字符串类型的变量,而 %d 表示整数类型的变量。在字符串最后的 % 后,以括号括起来的变量将按照顺序依次替换占位符。
format() 方法
Python 还提供了 format() 方法来格式化字符串,该方法使用大括号 {} 作为占位符,并通过 format() 方法的参数来提供实际的值。
下面是一个使用 format() 方法的示例:
name = "Charlie"
age = 35
print("My name is {} and I'm {} years old.".format(name, age))
输出结果:
My name is Charlie and I'm 35 years old.
在这个示例中,format() 方法会将大括号 {} 替换为对应参数的值,并按照顺序进行替换。
format() 方法还可以使用索引或关键字参数来指定要替换的变量,如下所示:
name = "David"
age = 40
print("My name is {0} and I'm {1} years old.".format(name, age))
print("My name is {name} and I'm {age} years old.".format(name=name, age=age))
输出结果:
My name is David and I'm 40 years old.
My name is David and I'm 40 years old.
在第一个示例中,{0} 和 {1} 表示按照索引顺序替换参数的值。在第二个示例中,{name} 和 {age} 使用关键字参数的方式进行替换。
格式化指令
在格式化操作符 % 和 format() 方法中,可以使用不同的格式化指令来控制输出字符串的格式。下面是一些常用的格式化指令示例:
– %s:字符串类型,通用格式化指令
– %d:十进制整数类型
– %f:浮点数类型
– %e:科学计数法格式
– %x:十六进制整数类型
可以通过指定格式化指令的方式来控制输出的样式,如下所示:
name = "Eve"
age = 45
print("My name is %10s." % name) # 右对齐,总宽度为 10
print("I'm %03d years old." % age) # 右对齐,总宽度为 3,不足用 0 填充
print("My height is %.2f meters." % 1.75) # 浮点数保留 2 位小数
输出结果:
My name is Eve.
I'm 045 years old.
My height is 1.75 meters.
在这个示例中,%10s 表示右对齐,总宽度为 10 的字符串类型;%03d 表示右对齐,总宽度为 3 的整数类型,并用 0 填充不足的位数;%.2f 表示浮点数保留 2 位小数。
如果使用 format() 方法,则可以通过在大括号 {} 中指定格式化指令来实现相同的效果:
name = "Eve"
age = 45
print("My name is {:>10s}.".format(name)) # 右对齐,总宽度为 10
print("I'm {:03d} years old.".format(age)) # 右对齐,总宽度为 3,不足用 0 填充
print("My height is {:.2f} meters.".format(1.75)) # 浮点数保留 2 位小数
输出结果与上例相同。
结论
本文介绍了 Python 中格式化字符串的几种方法,包括字符串插值、格式化操作符 %、format() 方法以及 f-string 的用法。这些方法可以根据需求灵活地处理字符串的格式与输出。无论是选择传统的格式化操作符,还是使用较新的 f-string,都可以便捷地实现字符串格式化的功能,提高代码的可读性和清晰度。
极客教程