2014-10-10 99 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