Python中的转义序列
如果您已经进行了一段时间的编程,您一定已经使用过字符串。您可能已经使用打印语句打印了许多字符串,并解决了成千上万个错误。但是这里有一个问题:“您有没有尝试过在双引号括起来的字符串中插入双引号?”或者,您有没有尝试在单引号括起来的字符中打印单引号?在这两种情况下,都会引发错误,因为Python在找到引号后将搜索第二个引号。如果找不到,它会引发语法错误。 那么,我们如何打印出这样的语句: Hi”Hello? **
答案是,”字符串中的双引号必须由Python解析。为了实现这一点,Python中有称为转义序列的特殊字符。本文讨论了转义序列的概念、用途和示例的重要性。
定义: 顾名思义,转义序列是在字符串或字符中使用时具有特殊含义的字符序列。
语法: 字符需要在反斜杠字符之前。
示例: \n、\t等。
我们无法将这些字符插入到字符串中的字符称为违规字符,并且这些字符会修改字符串。转义序列的作用是在不修改字符串的情况下将这些字符插入到字符串中。
让我们首先看一个简单的示例:
1. 将单引号插入到字符串中
#without using \’
string = 'Hi! 'man'
print ("Without using \: ", string)
输出:
string = 'Hi! 'man'
^
SyntaxError: invalid syntax
理解: Python在字符串’Hi!’man’中寻找一个结尾的单引号。因此,它会引发一个错误。
- 在Python中,打开引号的数量必须等于结束引号的数量 – 使用的引号总数必须是偶数。因此,当找不到偶数数量的引号时,会引发一个错误。
#在字符串中使用”
string = 'Hi!''man'
print ("By using \: ", string)
输出:
Hi! man
理解:
这里,“Hi!”和“man”被视为两个独立的字符串,所以不会引发错误。引号的数量是偶数。但是,如果我们尝试在“Hi!”和“man”之间插入一些东西,Python再次会产生困惑并引发错误。
示例:
string = 'Hi!'!'man'
print ("By using \: ", string)
输出:
string = 'Hi!'!'man'
^
SyntaxError: invalid syntax
使用转义序列
#使用 \’
string = 'Hi! \'man'
print ("By using \: ", string)
输出:
By using \: Hi! 'man
你可以观察到我们的问题现在已经解决了。此外,在这种情况下,另一个解决方案是我们可以使用双引号来引用字符串,并在字符串中使用单引号:
string = "Hi!'man"
print ("By using \: ", string)
输出:
By using \: Hi!'man
在Python中,还有更多的转义序列可以帮助程序员打印不同类型的无效语句:
转义字符 | 用法 |
---|---|
\’ | 在用单引号括起来的字符串内打印单引号。 |
\” | 在用双引号括起来的字符串内打印双引号。 |
\n | 在同一行中,即使在新的一行中打印 \n 后面的部分。 |
\t | 提供相当于8个普通空格的制表符空间。 |
\r | 将光标移到行的起始位置,称为 “回车”。 |
\b | 提供一个退格。 |
\f | 创建一个全新的字符串格式化机制 – f-string。 |
\ooo | 给出八进制表示。 |
\\ | 打印一个反斜杠字符。 |
\xhh | 给出十六进制表示。 |
现在,让我们看一些序列的示例,以了解它们的用途:
1. /”
#without using /:
string = "Hi!"man"
print ("Without using \: ", string)
输出:
string = "Hi!"man"
^
SyntaxError: invalid syntax
#by using /:
string = "Hi!\"man"
print ("By using \: ", string)
输出:
By using \: Hi!"man
了解: 您可以看到,如果不使用反斜杠字符,我们会得到一个错误,而当我们在“,”之前加上了/,我们得到了打印输出。
2. \n
#without using \n:
string = "Hi! man"
print ("string =",string)
输出:
string = "Hi!"man"
#By using /n:
string = "Hi\nman"
print ("By using \n: ", string)
输出:
By using
: Hi!
man
了解:
在字符串中,“通过使用\n”,不知不觉地,我们使用了\n。我们需要将其打印出来,但是我们不希望它的功能生效。该怎么办?使用转义序列:
string = "Hi\nman"
print ("By using \\n: ", string)
输出:
By using \n: Hi
man
3. \t
string = "Hi! man"
print ("Without using \\t: ", string)
输出:
Without using \: Hi! man
#By using \t
string = "Hi!\tman"
print ("By using \\t: ",string)
输出:
By using \t: Hi! man
理解: 在第一段代码中,我们使用普通的空格来书写普通语句。在第二段代码中,我们使用\t来在”Hi!”和”man”之间提供一个制表符空间。
4. \r
#without using \r
string = "Hi! man"
print ("Without using \\r: ", string)
输出:
Without using \r: Hi! man
#By using \r
string = "Hi!\rman"
print ("By using \\r: ",string)
输出:
manusing \r: Hi!
理解:
当我们使用\r时,所有的\r后面的内容将会通过替换所有已存在的字符被移到前面。
那么字符串将会是”By using \\r: Hi!\r man ”
在\r后面的内容是”man”。这个单词将会通过替换已存在的字符-“By_”使得字符串变为man using \r: Hi!
- 如果在Hi! man中使用\r:
string = "Hi!\rman"
print (string)
输出:
man
在这里,“man”后面接一个\r。它将被带到字符串的前面,替换Hi!; Hi!中的三个字符将被man替换,使输出为“man”。
5. \b
#without using \b
string = "Hi! man"
print ("Without using \\b: ", string)
输出:
Without using \b: Hi! man
#by using \b
string = "Hi!\bman"
print ("By using \\b: ",string)
输出:
By using \b: Himan
理解:
\b 是退格字符。它像键盘和计算器上的退格键一样删除前一个字符。我们在 Hi! 和 man 之间加入了 \b。前一个字符是”!”,因此它被删除了。
6. \ooo
ooo 代表八进制数。我们可以使用这个字符来获得与八进制表示相等的字符。
示例:
string = "\543\432\789"
print (string)
输出:
??89
理解:
\543代表什么?
\432代表什么?
\789代表89
7. \xhh
hh代表八进制数字。我们可以使用这个字符来获取等同于十六进制表示的字符。
示例:
string = "\x54\x34"
print (string)
输出:
T4
理解:
\x54表示T
\x34表示4
文章中讨论的序列是最常用的转义字符。这些不是Python中唯一的转义序列。在编写不同逻辑时,更多的序列会在不同的情况下很有用。