为什么python将'\12'解释为'\n'

bjg*_*g90 3 python python-3.x

我有一个字符串,其中包含以下序列 '10\S\12/L'

我想根据使用的行拆分字符串,.split('\n')但是它会导致字符串在'\12'. 我发现只要一个字符串包含这个,解释器就会用换行符打印字符串。

为什么和我'\12'一样,'\n'我该如何预防?

Bra*_*mon 7

因为 Python 将其解释为换行符八进制代码,由反斜杠转义引导,后跟 12。

你可以反过来看到:

>>> # Python 3.9 REPL
>>> oct(ord('\n'))
'0o12'
Run Code Online (Sandbox Code Playgroud)

请参阅有关String 和 Bytes Literals的 Python 文档:

\ooo表示具有八进制值 ooo[unicode] 字符......最多接受3 位数字,”但在这种情况下,停在这两个数字上。

如果您想在字符串中包含文字反斜杠,您可以:

  • 用另一个反斜杠转义它: '\\12'
  • 使用以“r”为前缀的原始字符串文字:r'\12'