2014-10-10 96 views
2

问题的标题告诉它;我在读一本书,我想尝试使用IPython的,但所有的代码运行中的代码的结构是这样的:如何在IPython中粘贴IPython输出?

right = DataFrame({'key1': ['foo', 'foo', 'bar', 'bar'], 
....: 'key2': ['one', 'one', 'one', 'two'], 
....: 'rval': [4, 5, 6, 7]}) 

我想直接从书复制在终端内部但即使使用%粘贴我收到一个无效的语法错误。我可以使用%cpaste,但对于较长的输入,这有点令人沮丧。

感谢您的帮助

+1

看来,%paste只会检测并剥离纯python的延续提示'...',而不是ipython的'....:'。所以将提示改为'...'是可行的。但这可能不适合你。 – cel 2014-10-10 12:26:29

+0

的确,因为代码来自不是我的提示 – 2014-10-10 12:31:00

+0

IPython应该能够处理这个。文档说IPython会话代码可以从版本1开始粘贴。也许这是一个没有被注意到的回归(bug)。 http://ipython.org/ipython-doc/2/interactive/reference.html?#pasting-of-code-starting-with-python-or-ipython-prompts – Dunes 2014-10-10 13:20:34

回答

1

所以它应该工作,但你必须确保粘贴....:时很好地对准。这意味着你需要仔细复制。

下应该例如工作:

right = DataFrame({'key1': ['foo', 'foo', 'bar', 'bar'], 
    ....: 'key2': ['one', 'one', 'one', 'two'], 
    ....: 'rval': [4, 5, 6, 7]}) 

或者这一个了(在这里我们看到的In []:半列的排列:

In [68]: a = [1, 
    ....: 2, 
    ....: 3] 

我的猜测是,如果你不能复制更好如果是这样,你仍然可以打开一个基本的文本编辑器,找到并替换....:什么也没有。

而不是打开一个问题,它应该更可能与%paste函数的一个功能相关,该功能实现了一些处理不良缩进的功能,但随后它开始变得混乱,IMO。

希望这会有所帮助。

+0

正如你指出你的例子工作正常,问题是,虽然从书中复制粘贴,它不会保存......之前的空格。所以缩进被破坏。我认为虽然IPython应该能够处理这个 – 2014-10-10 14:16:36

+1

也许是因为它是一个pdf。它是什么书? – jrjc 2014-10-10 14:24:40

+0

是的,这是一个pdf,但几乎所有的书籍都是...... – 2014-10-10 14:55:54