Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么python解释'\12';as'\n';_Python_Python 3.x - Fatal编程技术网

为什么python解释'\12';as'\n';

为什么python解释'\12';as'\n';,python,python-3.x,Python,Python 3.x,我有一个字符串,其中包含以下序列'10\S\12/L' 我想使用.split('\n')基于行分割字符串,但是它会导致字符串在'\12'上断开。我发现每当一个字符串包含这个时,解释器就会打印带有换行符的字符串 为什么'\12'与'\n'相同?我如何防止它?因为Python将其解释为,以反斜杠转义开头,然后是12 你可以看到相反的情况: >>> # Python 3.9 REPL >>> oct(ord('\n')) '0o12' 请参阅以下站点上的Pytho

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

我想使用
.split('\n')
基于行分割字符串,但是它会导致字符串在
'\12'
上断开。我发现每当一个字符串包含这个时,解释器就会打印带有换行符的字符串


为什么
'\12'
'\n'
相同?我如何防止它?

因为Python将其解释为,以反斜杠转义开头,然后是12

你可以看到相反的情况:

>>> # Python 3.9 REPL
>>> oct(ord('\n'))
'0o12'
请参阅以下站点上的Python文档:

\ooo
表示八进制值为ooo的[unicode]字符…最多可接受3位数字,”但在本例中,在这两位数字处停止

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

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

正如评论中提到的,Python将12解释为n,因为12是其ASCII代码。有两种方法可以解决这个问题

  • 将“r”添加到字符串的开头
  • 转义要包含在字符串中的每个斜杠。因此,如果您想按字面意思使用“\12”,请使用:

  • 正如适用的文档所告诉您的,后跟八进制数的反斜杠(转义信号)具有特殊含义。从这些文档中你还不了解什么?@Prune IMO,这是Python文档中一个特别密集且很难用谷歌搜索的部分。请注意,除非你真正、确切地记住所有转义序列,对于任何应该包含多个文本的字符串,最好使用原始字符串文本
    \
    。即使只有一个文本
    \
    ,这可能已经是一个好主意了。
    string = r"10\S\12/L"
    
    string = "10\S\\12/L"