Python 字符串格式化
F-String 在 Python 3.6 中引入,现在是格式化字符串的首选方式。
在 Python 3.6 之前,我们必须使用 format()
方法。
F-Strings
F-string 允许您格式化字符串的选定部分。
要将字符串指定为 f-string,只需在该字符串文字前加上一个 f
,如下所示:
占位符和修饰符
要在 f-string 中格式化值,请添加占位符 {}
,占位符可以包含变量、操作、函数和用于格式化值的修饰符。
占位符也可以包含一个修饰符来格式化值。
通过添加冒号 :
后跟一个合法的格式化类型来包含修饰符,例如 .2f
,它表示小数点后保留 2 位的定点数。
您也可以直接格式化值,而不将其保留在变量中。
在 F-Strings 中执行操作
您可以在占位符内执行 Python 操作。
您可以进行数学运算
您可以对变量执行数学运算
示例
在显示价格之前加上税费
price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)
自己动手试一试 »
您可以在占位符内执行 if...else
语句。
示例
如果价格超过 50,则返回“昂贵”,否则返回“便宜”
price = 49
txt = f"It is very {'Expensive' if price>50 else 'Cheap'}"
print(txt)
自己动手试一试 »
在 F-Strings 中执行函数
您可以在占位符内执行函数。
函数不必是内置的 Python 方法,您可以创建自己的函数并使用它们。
示例
创建一个将英尺转换为米的函数
def myconverter(x)
return x * 0.3048
txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)
自己动手试一试 »
更多修饰符
在本章开头,我们解释了如何使用 .2f
修饰符将数字格式化为小数点后保留 2 位的定点数。
还有其他几个修饰符可用于格式化值。
以下是所有格式化类型列表。
格式化类型 | ||
---|---|---|
:< |
试一试 | 左对齐结果(在可用空间内) |
:> |
试一试 | 右对齐结果(在可用空间内) |
:^ |
试一试 | 居中对齐结果(在可用空间内) |
:= |
试一试 | 将符号放在最左侧位置 |
:+ |
试一试 | 使用加号指示结果是正数还是负数 |
:- |
试一试 | 仅对负值使用减号 |
: |
试一试 | 在正数前插入额外的空格(负数前使用负号) |
:, |
试一试 | 使用逗号作为千位分隔符 |
:_ |
试一试 | 使用下划线作为千位分隔符 |
:b |
试一试 | 二进制格式 |
:c |
将值转换为相应的 Unicode 字符 | |
:d |
试一试 | 十进制格式 |
:e |
试一试 | 科学记数法,使用小写 e |
:E |
试一试 | 科学记数法,使用大写 E |
:f |
试一试 | 定点数格式 |
:F |
试一试 | 定点数格式,大写格式(显示 inf 和 nan 为 INF 和 NAN ) |
:g |
通用格式 | |
:G |
通用格式(使用大写 E 表示科学记数法) | |
:o |
试一试 | 八进制格式 |
:x |
试一试 | 十六进制格式,小写 |
:X |
试一试 | 十六进制格式,大写 |
:n |
数字格式 | |
:% |
试一试 | 百分比格式 |
String format()
在 Python 3.6 之前,我们使用 format()
方法来格式化字符串。
format()
方法仍然可以使用,但 f-strings 更快,并且是格式化字符串的首选方式。
本页的下一个示例将演示如何使用 format()
方法格式化字符串。
format()
方法也使用花括号作为占位符 {}
,但语法略有不同。
你可以在花括号内添加参数来指定如何转换值。
查看我们 String format() 参考 中的所有格式化类型。
多个值
如果你想使用更多值,只需向 format() 方法添加更多值即可。
print(txt.format(price, itemno, count))
并添加更多占位符。
示例
quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
自己动手试一试 »
索引号
您可以使用索引号(花括号内的数字 {0}
)来确保值放置在正确的占位符中。
示例
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
自己动手试一试 »
同样,如果你想多次引用同一个值,请使用索引号。
示例
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
自己动手试一试 »
命名索引
您还可以使用命名索引,方法是在花括号内输入一个名称 {carname}
,然后您必须在使用参数值时使用名称 txt.format(carname = "Ford")
。
示例
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))
自己动手试一试 »