163 lines
5.8 KiB
Markdown
163 lines
5.8 KiB
Markdown
# Python 中的字符串格式——快速概述
|
||
|
||
> 原文:<https://www.askpython.com/python/string/string-formatting>
|
||
|
||
字符串格式化,顾名思义,指的是 Python 中格式化字符串的多种方式。在本教程中,我们将讨论不同的方法以及如何使用它们。
|
||
|
||
## 什么是字符串格式?
|
||
|
||
假设你正在编写一个程序,打印一个数字的平方。在你的输入中,你从用户那里得到一个整数,在输出中,你告诉用户这个整数的平方是某某。
|
||
|
||
例如,如果输入是 12,那么您需要打印“12 的平方是 144”。我们不能像这样写一个完整的字符串,因为我们有两个整数要插入到字符串中,所以我们需要一种方法来生成这个字符串。字符串格式化允许我们这样做。
|
||
|
||
注意:如果我们做`print("The square of", input, "is", result)`,这将打印四种不同的东西,它不会生成格式化的字符串,所以这不算字符串格式化。
|
||
|
||
## 字符串格式化技术的类型
|
||
|
||
今天我们将讨论三种格式化字符串的方法:
|
||
|
||
1. 使用%运算符
|
||
2. 使用 f 弦
|
||
3. 使用 format()方法
|
||
|
||
让我们逐一讨论每种方法。
|
||
|
||
### 1。使用`%`操作符的字符串格式
|
||
|
||
这是字符串格式化的老方法,对于简单的操作仍然有用。这与 c 语言中的`printf`语句非常相似。
|
||
|
||
让我们举一个例子:
|
||
|
||
```py
|
||
num = 12
|
||
result = num * num
|
||
str = "The square of %d is %d" % (num, result)
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
The square of 12 is 144
|
||
|
||
```
|
||
|
||
我们有两个整数,`num`和`result`。在双引号中,我们写的是要打印的整个字符串,但是我们写的不是整数,而是`%d`。这将告诉 Python 这里要替换一个整数。
|
||
|
||
在字符串之后,我们使用`%`操作符并写入第二个操作数,它是一个元组,包含要以正确顺序替换的整数列表。在上面的例子中,我们有两个整数需要替换,所以我们将这两个整数写入一个元组,并将其作为第二个操作数。
|
||
|
||
请注意,在我们编写的字符串`%d`中,`%`之后的内容被称为格式说明符。在示例中,`d`是为整数指定的格式,`s`是为字符串指定的格式,`f`是为浮点或小数指定的格式,等等。要查看说明符的完整列表,我们可以查看 [Python 文档](https://docs.python.org/3/library/stdtypes.html#old-string-formatting)。
|
||
|
||
#### 使用`%`格式化字符串的技巧
|
||
|
||
1. 我们可以在`%`和格式说明符(例如`%5d`)之间指定一个数字,Python 会给整数左填充,这样整数的字符总数就等于指定的数字。如果是`%5d`,则将“123”替换为“123 ”,将 12 替换为“12 ”,以此类推。
|
||
2. 上面的数字可以在左边指定一个零(例如`%05d`),Python 会给这个整数类似的左填充,但不是空格,而是零。例如,在%05d 的情况下,“123”将被替换为“00123”,“12”将被替换为“00012”,等等。
|
||
3. 上面的数字也可以在左边用“-”号(`%-5d`)来指定,Python 不会提供左边的填充,而是在右边提供填充。因此,对于`%-5d`,将“123”替换为“123”,“12”将替换为“12”,以此类推。
|
||
|
||
当要构造一个表时,这些点可以派上用场。
|
||
|
||
### 2。使用 f 字符串格式化
|
||
|
||
这是最容易理解的,也是最广泛使用的格式化技术。为了理解它,让我们举个例子。
|
||
|
||
```py
|
||
num = 12
|
||
result = num * num
|
||
str = f"The square of {num} is {result}"
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
The square of 12 is 144
|
||
|
||
```
|
||
|
||
正如你所看到的,我们直接将表达式嵌入到字符串中。该字符串还以字母“f”为前缀,这将告诉 python 它是一个 [f 字符串](https://www.askpython.com/python/string/python-f-string),无论在`{`和`}`中写入什么表达式,都将被计算并嵌入到字符串的那个位置。
|
||
|
||
花括号内的表达式不必是单个变量,而是可以是任何返回值的语句。它可以是算术计算、函数调用或条件运算。让我们看一个例子:
|
||
|
||
```py
|
||
a = 1
|
||
b = 2
|
||
str = f"Expression: {a + b}"
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
Expression: 3
|
||
|
||
```
|
||
|
||
在上面的例子中,我们在 f 字符串内部执行了一个数学运算。所以我们可以看到 f 弦是强大的选项。
|
||
|
||
让我们看另一个例子:
|
||
|
||
```py
|
||
a = 1
|
||
b = 2
|
||
str = f"a is '{a:5}' and b is '{b:05}'"
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
a is ' 1' and b is '00002'
|
||
|
||
```
|
||
|
||
类似于`%`操作符,我们也可以如上例所示指定填充。
|
||
|
||
### 3。使用`.format()`方法进行字符串格式化
|
||
|
||
这种方法非常类似于 f 字符串,让我们用一个例子来看看:
|
||
|
||
```py
|
||
num = 12
|
||
result = num * num
|
||
str = "The square of {} is {}".format(num, result)
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
The square of 12 is 144
|
||
|
||
```
|
||
|
||
正如我们所看到的,在字符串内部,我们使用`{}`指定了两个占位符,然后我们对字符串使用`format`方法,并传递适当的整数以正确的顺序替换。
|
||
|
||
我们可以将标识符放在花括号内,但是我们稍后必须发送标识符的值。我们也可以像前面一样指定左填充。举个例子:
|
||
|
||
```py
|
||
a = 1
|
||
b = 2
|
||
str = "a is '{first}' and b is '{second:03}'".format(first=a, second=b)
|
||
print(str)
|
||
|
||
```
|
||
|
||
输出:
|
||
|
||
```py
|
||
a is '1' and b is '002'
|
||
|
||
```
|
||
|
||
在上面的例子中,我们将名字放入占位符中,在 [`format`方法的](https://www.askpython.com/python/string/python-format-function)参数列表中,我们使用名字为每个占位符指定值。与其他技术一样,第二个占位符甚至被指定为左边零填充。
|
||
|
||
## 结论
|
||
|
||
在本教程中,我们学习了字符串格式,并讨论了三种常见的方法。我们首先学习了`%`操作符,然后我们继续学习 f 字符串和`format`方法。我们还讨论了如何向格式化字符串添加填充,并通过查看其输出来研究代码。
|
||
|
||
希望你学得愉快,下次教程再见。 |