IPython在原始字符串的行延续中的不一致行为

时间:2015-10-01 02:36:52

标签: python ipython

CPython和IPython shell似乎对原始字符串的行延续有着微妙的不同解释。这些行为很容易证明。

  • 示例1:原始字符串的行继续。

CPython结果:

>>> r'abc\
... def'
'abc\\\ndef'

IPython shell结果:

In [1]: r'abc\
   ...: def'
Out[1]: 'abcdef'
  • 示例2:原始字符串的转义行延续。

CPython结果(在<Enter>之后立即按\\):

>>> r'abc\\
  File "<stdin>", line 1
    r'abc\\
          ^
SyntaxError: EOL while scanning string literal

IPython shell结果:

In [1]: r'abc\\
   ...: def'
Out[1]: 'abc\\def'

应该清楚CPython结果在两种情况下都是正确的,因为它符合Python Language Reference的部分:

  

[...]另请注意,单行反斜杠后跟换行符   解释为这两个字符作为字符串的一部分,而不是作为一个   延续线。

和下一段:

  

[...]反斜杠可以使用前面的反斜杠进行转义;但是,两者都有   留在字符串中。

这是IPython shell中的错误吗?

相关的sysinfo:IPython 2.4.1,在Fedora 22上使用CPython 2.7.10和3.4.2进行了测试。

1 个答案:

答案 0 :(得分:0)

IPython github

提出了这个问题

https://github.com/ipython/ipython/issues/5828

它被认为是一个错误,但似乎没有高优先级。它只影响原始字符串。

我想不出会困扰我的情况。我需要'abc\\\ndef'哪里?