Python 转义序列

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

在字符串中,有时需要包含一些特殊的符号,但是有些符号不能直接输出,就需要使用转义序列。

关于转义,维基百科这样定义:

转义是当由于技术等原因、无法直接在代码中写出所要的字符时采用的,以多个字符的有序组合来表示原本需要的字符的手段,而转义序列(escape sequence)指在转义时使用的有序字符组合。

转义序列

作为一名伟大的程序员,在向别人介绍自己的职业时,往往会很自豪的说:Hi, "I'm a Pythonista"。如果要在 Python 中表示这句话,不能直接使用单引号或双引号。

>>> print('Hi, "I'm a Pythonista"')
...
SyntaxError: invalid syntax
>>> 
>>> print("Hi, "I'm a Pythonista"")
...
SyntaxError: invalid syntax

要解决这个问题,有两种方式:

  • 使用三重引号
  • 使用转义序列

转义序列以反斜杠(\)开头,并以不同的方式解释。如果使用单引号来表示字符串,那么字符串内的所有单引号都必须转义,双引号也不例外。

>>> print('''Hi, "I'm a Pythonista"''')  # 使用三重引号
Hi, "I'm a Pythonista"
>>> 
>>> print('Hi, "I\'m a Pythonista"')  # 转义单引号
Hi, "I'm a Pythonista"
>>> 
>>> print("Hi, \"I'm a Pythonista\"")  # 转义双引号
Hi, "I'm a Pythonista"

以下是 Python 支持的所有转义序列的列表:

转义序列说明
\(行尾)续行符
\\反斜杠
\'单引号
\"双引号
\a响铃
\b退格(Backspace)
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
\ooo值为八进制 ooo 的字符
\xhh值为十六进制 hh 的字符

测试其中的转义序列,感受一下实际的意思:

>>> print('C:\\Windows\\System32')
C:\Windows\System32
>>> 
>>> print('I like \nPython')
I like 
Python
>>> 
>>> print('This is \x48\x45\x58')
This is HEX

原始字符串

原始字符串(Raw String),简单理解就是:字符串中的每个字符都表示原始含义。

有时,可能希望忽略字符串中的转义序列:

>>> print('This is \x48\x45\x58')
This is HEX

遗憾的是,这里的反斜杠并不是原始符号的含义,而是和后面的字符一起表示十六进制(被转义了)。

如何避免呢?很 easy,为字符串加上前缀 r 或者 R(大小写均可):

>>> print(r'This is \x48\x45\x58')
This is \x48\x45\x58

R 是 Raw 的缩写,以其开头的字符串被称作原始字符串,并将反斜杠视为原义字符。因此,其中的任何转义序列都不会被特别处理,将会被忽略。

  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值