为什么'\x'在Python中无效?

26 投票
5 回答
35754 浏览
提问于 2025-04-15 21:58

我在玩一些反斜杠('\')字符,像是用'\a\b\c...'来看看Python是如何把这些字符当作控制字符来处理的。结果我发现了这些:

\a - BELL
\b - BACKSPACE
\f - FORMFEED
\n - LINEFEED
\r - RETURN
\t - TAB
\v - VERTICAL TAB

我试了很多其他字符,比如'\g'、'\s'等等,它们的结果就是一个反斜杠加上那个字符,变成了两个字符的字符串。我明白这是故意设计的,听起来也没问题。

但是'\x'就有点麻烦了。当我的脚本运行到这一行代码时:

val = "\x"

我得到了:

ValueError: invalid \x escape

那么,'\x'到底有什么特别之处呢?为什么它和其他没有转义的字符处理方式不一样?

5 个回答

6

x用于在字符串中定义(一个字节的)十六进制字面量,例如:

'\x61'

这个会计算出'a',因为61是97的十六进制值,而97在ASCII编码中代表字母a。

6

\xhh 是用来表示十六进制转义字符的。

21

这里有一张表,列出了所有的转义码及其含义,详细信息可以在文档中找到。

Escape Sequence    Meaning                        Notes
\xhh               Character with hex value hh    (4,5)

注意事项:

4. 和标准C语言不同,这里需要正好两个十六进制数字。
5. 在字符串字面量中,十六进制和八进制的转义表示的是具有给定值的字节;这个字节不一定要在源字符集中编码成一个字符。在Unicode字面量中,这些转义表示的是具有给定值的Unicode字符。

撰写回答