python - Python 3 中有效源字符的范围是多少?
问题描述
解决方案
正如语法正式所述,astringescapeseq
是反斜杠字符,后跟任何单个源字符。正如下一段所述:
源字符集由编码声明定义;如果源文件中没有给出编码声明,则为 UTF-8;
如果您指定当前源文件是 ASCII 格式并且您编写了\
,那将不是 ASCII 字符,因此不会是有效的转义序列。但我真的不明白为什么你会假装一个文件不是 ASCII 格式的。因此,撇开错误的字符编码不谈,astringescapeseq
正好由两个字符组成,其中第一个是反斜杠。所以是的,\a
即使它没有做任何特别的事情,它也是一个转义序列,\newline
也是一个转义序列。
一旦识别出转义序列,就必须对其进行解释。然而,Python 的工作方式与大多数 C 风格的语言略有不同,如果转义序列没有特殊含义,则反斜杠和后面的字符都会添加到字符串中。
正如我们在页面下方的表格中看到的那样,由反斜杠和换行符组成的转义序列具有……被完全忽略的特殊含义。就好像源代码中根本没有两个字符一样。RAW STRINGS 除外,其中转义的换行符没有特殊含义,因此将生成一个保留了反斜杠和换行符的字符串。
最后,文档有些自相矛盾。它说转义序列恰好由两个字符组成,但该表包含八进制的转义序列(反斜杠后跟 1 到 3 位数字)以及以 、 和 开头但必须遵循的十六进制和 unicode\x
字符\N
的特殊\u
情况\U
用有效的东西来替换 - 否则他们会抛出一个SyntaxError
.
推荐阅读
- docker - 如何在 docker-compose 中运行具有 gpu 支持的 tensorflow?
- c - 使用一组运算符在 C 中定义宏
- arrays - Julia:不同类型的数组
- c++ - Pointer To 引用传递的指针
- tensorflow - keras 无法导入 pydot
- java - Java & gradle -> 仅包含库中的特定包
- ruby - 使用 Ruby 服务器作为 API 中间人
- python-3.x - 熊猫向前向后填充列级别内的列
- ios - iOS - 在后台推送通知上刷新数据(发出 Api 请求)
- powerquery - Power Query 将列表中的记录转换为列