首页 > 解决方案 > Python 3 中有效源字符的范围是多少?

问题描述

标签: python

解决方案


正如语法正式所述,astringescapeseq是反斜杠字符,后跟任何单个源字符。正如下一段所述:

源字符集由编码声明定义;如果源文件中没有给出编码声明,则为 UTF-8;

如果您指定当前源文件是 ASCII 格式并且您编写了\,那将不是 ASCII 字符,因此不会是有效的转义序列。但我真的不明白为什么你会假装一个文件不是 ASCII 格式的。因此,撇开错误的字符编码不谈,astringescapeseq正好由两个字符组成,其中第一个是反斜杠。所以是的,\a即使它没有做任何特别的事情,它也是一个转义序列,\newline也是一个转义序列。

一旦识别出转义序列,就必须对其进行解释。然而,Python 的工作方式与大多数 C 风格的语言略有不同,如果转义序列没有特殊含义,则反斜杠和后面的字符都会添加到字符串中。

正如我们在页面下方的表格中看到的那样,由反斜杠和换行符组成的转义序列具有……被完全忽略的特殊含义。就好像源代码中根本没有两个字符一样。RAW STRINGS 除外,其中转义的换行符没有特殊含义,因此将生成一个保留了反斜杠和换行符的字符串。

最后,文档有些自相矛盾。它说转义序列恰好由两个字符组成,但该表包含八进制的转义序列(反斜杠后跟 1 到 3 位数字)以及以 、 和 开头但必须遵循的十六进制和 unicode\x字符\N的特殊\u情况\U用有效的东西来替换 - 否则他们会抛出一个SyntaxError.


推荐阅读