Python 字符串格式化
F-字符串是在 Python 3.6 中引入的,现在是格式化字符串的首选方法。
在 Python 3.6 之前,我们必须使用 format()
方法。
F-字符串
F-字符串允许您格式化字符串中的选定部分。
要将字符串指定为 f-字符串,只需在字符串文字前面加上一个 f
,如下所示
占位符和修饰符
要格式化 f-字符串中的值,请添加占位符 {}
,占位符可以包含变量、操作、函数和修饰符来格式化值。
占位符还可以包含一个修饰符来格式化值。
通过添加一个冒号 :
然后是一个合法的格式化类型来包含修饰符,例如 .2f
,这意味着带有 2 位小数的定点数字
您也可以直接格式化值,而无需将其保存在变量中
在 F-字符串中执行操作
您可以在占位符内执行 Python 操作。
您可以执行数学运算
您可以在变量上执行数学运算
示例
在显示价格之前添加税款
price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)
自己尝试 »
您可以在占位符内执行 if...else
语句
示例
如果价格超过 50,则返回“Expensive”,否则返回“Cheap”
price = 49
txt = f"It is very {'Expensive' if price>50 else 'Cheap'}"
print(txt)
自己尝试 »
在 F-字符串中执行函数
您可以在占位符内执行函数
该函数不必是内置的 Python 方法,您可以创建自己的函数并使用它们。
示例
创建一个将英尺转换为米的函数。
def myconverter(x)
return x * 0.3048
txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)
自己尝试 »
更多修饰符
在本章开头,我们解释了如何使用 .2f
修饰符将数字格式化为具有两位小数的定点数字。
还有其他几个可以用来格式化值的修饰符。
以下是所有格式类型列表。
格式类型 | ||
---|---|---|
:< |
试试看 | 左对齐结果(在可用空间内)。 |
:> |
试试看 | 右对齐结果(在可用空间内)。 |
:^ |
试试看 | 居中对齐结果(在可用空间内)。 |
:= |
试试看 | 将符号放置在最左侧位置。 |
:+ |
试试看 | 使用加号表示结果是正数还是负数。 |
:- |
试试看 | 仅对负值使用减号。 |
: |
试试看 | 使用空格在正数(以及负数之前的减号)之前插入一个额外的空格。 |
:, |
试试看 | 使用逗号作为千位分隔符。 |
:_ |
试试看 | 使用下划线作为千位分隔符。 |
:b |
试试看 | 二进制格式。 |
:c |
将值转换为相应的 Unicode 字符。 | |
:d |
试试看 | 十进制格式。 |
:e |
试试看 | 科学格式,使用小写 e。 |
:E |
试试看 | 科学格式,使用大写 E。 |
:f |
试试看 | 定点数字格式。 |
:F |
试试看 | 定点数字格式,使用大写格式(将 inf 和 nan 显示为 INF 和 NAN )。 |
:g |
通用格式。 | |
:G |
通用格式(对科学符号使用大写 E)。 | |
:o |
试试看 | 八进制格式。 |
:x |
试试看 | 十六进制格式,小写。 |
:X |
试试看 | 十六进制格式,大写。 |
:n |
数字格式。 | |
:% |
试试看 | 百分比格式。 |
字符串 format()
在 Python 3.6 之前,我们使用 format()
方法来格式化字符串。
仍然可以使用 format()
方法,但 f-strings 速度更快,是格式化字符串的首选方式。
本页面中的以下示例演示了如何使用 format()
方法格式化字符串。
format()
方法也使用花括号作为占位符 {}
,但语法略有不同。
您可以在花括号内添加参数来指定如何转换值。
查看我们 字符串 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"))
自己尝试 »