Python 中的转义序列

2024 年 8 月 29 日 | 5 分钟阅读

如果你已经编程一段时间了,你一定处理过字符串。你一定用 `print` 语句打印过数以万计的字符串,并解决了成千上万个错误。但是这里有一个问题,“你有没有尝试在双引号括起来的字符串中插入双引号?” 或者
你有没有尝试在单引号括起来的字符中打印单引号? 在这两种情况下,都会引发错误,因为 **Python 会在找到第一个引号后开始寻找第二个引号。如果找不到,它会引发语法错误。** 那么,我们如何打印一个类似 `Hi"Hello?` 的语句呢?

答案是 *,“字符串中的双引号必须由 Python 的眼睛进行转义。” 为了实现这一点,Python 中有一些特殊字符,称为 **转义序列。** 本文将通过示例讨论转义序列的概念、用法及其重要性。

定义:顾名思义,转义序列是在字符串或字符中使用时具有特殊含义的字符序列。

语法:字符需要以反斜杠字符开头

示例: \n, \t 等。

我们无法插入字符串中的字符称为 **非法字符,** 这些字符会修改字符串。转义序列的作用是在不修改字符串的情况下将这些字符插入字符串。

让我们先看一个简单的例子

1. 在字符串中插入单引号

#不使用 \'

输出

	string = 'Hi! 'man'
       	            ^
	SyntaxError: invalid syntax

理解: Python 在字符串 'Hi!'man' 中寻找结束的单引号。因此,它会引发错误。

  • 在 Python 中,开引号的数量必须等于结束引号的数量 - 使用的引号总数必须是偶数。因此,当找不到偶数个引号时,会引发错误。

#在字符串中使用 ''

输出

Hi! man

理解

在这里,'Hi!' 和 'man' 被视为两个独立的字符串,因此不会引发错误。引号的数量是偶数。但是,如果我们尝试在 'Hi!' 和 'man' 之间插入内容,Python 就会再次感到困惑并引发错误。

示例

输出

string = 'Hi!'!'man'
                  ^
SyntaxError: invalid syntax

使用转义序列

#使用 \'

输出

By using \:  Hi! 'man

您会注意到我们现在的问题已经解决了。此外,在这种情况下,另一种解决方案是我们可以使用双引号来括起字符串,并在字符串中使用 '。

输出

By using \:  Hi!'man

Python 中还有更多 **转义序列** 可以帮助程序员打印不同类型的无效语句。

转义字符用途
\'在用单引号括起来的字符串中打印单引号。
\"在用双引号括起来的字符串中打印双引号。
\n即使在同一行,也会将 \n 的后续部分打印在新行中。
\t提供相当于 8 个普通空格的制表符。
\r将光标移到行首,称为“回车”。
\b提供一个退格键。
\f创建一个 f-string,这是一个全新的字符串格式化机制。
\ooo提供八进制表示。
\\打印反斜杠字符。
\xhh提供十六进制表示。

现在,让我们看看这些序列的示例以了解它们的用途。

1. /"

输出

string = "Hi!"man"
                  ^
SyntaxError: invalid syntax

输出

By using \:  Hi!"man

理解:您可以看到,在不使用反斜杠字符的情况下,我们遇到了错误;当我们把 / 放在 " 前面时,它就被打印出来了。

2. \n

输出

string = "Hi!"man"

输出

By using 
:  Hi! 
man

理解

在字符串 "By using \n" 中,我们无意中使用了 \n。我们需要打印它,但又不希望它起作用。怎么办?使用转义序列。

输出

By using \n:  Hi
man

3. \t

输出

Without using \:  Hi! man

输出

By using \t:  Hi!	man

理解:在第一个代码中,我们编写了普通语句,提供了普通空格。在第二个代码中,我们使用 \t 在 Hi! 和 man 之间提供了一个制表符空格。

4. \r

输出

Without using \r:  Hi! man

输出

manusing \r:  Hi!

理解

当我们使用 \r 时,\r 之后的所有内容都将被移到前面,替换所有现有字符。

字符串将是 "By using \\r: Hi!\rman"

\r 之后的内容是 "man"。这个词将被移到字符串的开头,替换现有的字符-"By_",使字符串成为 man using \r: Hi!

  • 如果我们使用 \r 在 Hi! man 中

输出

man

在这里,"man" 紧随 \r 之后。它将被移到字符串的开头,替换 Hi!;Hi! 中的所有三个字符都将被 man 替换,输出为 "man"。

5. \b

输出

Without using \b:  Hi! man

输出

By using \b:  Himan

理解

\b 是退格字符。它会删除前一个字符,就像我们键盘和计算器上的退格键一样。我们在 Hi! 和 man 之间使用了 \b。前一个字符是 "!";因此,它被删除了。

6. \ooo

ooo 代表八进制数。我们可以使用这个字符获得等效于八进制表示的字符。

示例

输出

??89

理解

\543 代表 ?

\432 代表 ?

\789 代表 89

7. \xhh

hh 代表八进制数。我们可以使用这个字符获得等效于十六进制表示的字符。

示例

输出

T4

理解

\x54 代表 T

\x34 代表 4

本文讨论的序列是最常用的转义字符。这些不是 Python 中唯一的转义序列。在编写不同逻辑时,更多的序列将在不同场景下有用。