字符串无法粘贴到新的 iPython 5.0

String fails to paste in the new iPython 5.0

在 python 2.7 控制台以及 iPython 4 中,我能够将此字符串粘贴到变量中,如下所示:

In [2]: c = 'ÙjÌÉñõµÏ“JÖq´ž#»&•¼²nËòQZ<_'

随后我可以输入:

In [3]: print(c) 并且会 return ÙjÌÉñõµÏ“JÖq´ž#»&•¼²nËòQZ<_

然而,在 iPython 5.0 中,我得到以下错误:

In [4]: c = 'ÙjÌÉñõµ^LÏ“JÖq´ž#»&•¼²nËòQZ<_'
  File "<ipython-input-4-9bf9f2fa5210>", line 1
    c = 'ÙjÌÉñõµ

^
SyntaxError: EOL while scanning string literal

甚至 %paste return 一个错误:

    ÙjÌÉñõµ
    ^
SyntaxError: invalid syntax

iPython 从 4 到 5 发生了什么变化,为什么会发生这种情况?与没有转义引号的字符串有关?

http://blog.jupyter.org/2016/07/08/ipython-5-0-released/

Ipython5 将默认值 readline 替换为新的 prompt_toolkit。

看起来你的字符串中有几个字符被旧的读取行忽略了,但新的读取行看到了。第一个发生在 µ 之后。我在 SO windows 中看不到它,但是当将光标移到该行上时我可以 'feel it'。将行粘贴到编辑器时,我也能看到一些东西。但是我对原始文本工具还不够熟悉,无法查看更多内容。

当我将您的字符串粘贴到一个普通的 Python shell 时,我收到一个提示音并且屏幕被清除。所以即使是常规的 readline 这个字符串也有问题。

我添加了'|'是否有不可打印的字符

c = 'ÙjÌÉñõµ|Ï“JÖq´ž#|»&•¼|²nËòQZ<_'