CPython和IPython shell似乎对原始字符串的行延续有着微妙的不同解释。这些行为很容易证明。
CPython结果:
>>> r'abc\
... def'
'abc\\\ndef'
IPython shell结果:
In [1]: r'abc\
...: def'
Out[1]: 'abcdef'
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进行了测试。
答案 0 :(得分:0)
IPython
github
https://github.com/ipython/ipython/issues/5828
它被认为是一个错误,但似乎没有高优先级。它只影响原始字符串。
我想不出会困扰我的情况。我需要'abc\\\ndef'
哪里?