2017-02-09 48 views
2

我一直覺得這很煩人,只要IDLE代碼在線發佈,它就包含「> >>「和」...「字符,並且基本上不可能在沒有事先清理的情況下容易地複製/粘貼。如何在沒有提示的情況下複製/粘貼到Python控制檯(「>>>」和「...」)導致SynthaxError

有沒有簡單的方法來解決這個問題,無論是從代碼海報,更重要的是對我來說,代碼用戶的角度?

標記爲可能重複的問題詢問如何更改控制檯中的提示。我要問恰恰是,當我複製/粘貼代碼到我的控制檯,如下面的代碼:

>>> import os 
>>> os.getcwd() 

我怎麼能沒有運行到我的控制檯的問題,這樣做的話

File "<input>", line 1 
    >>> import os 
    ^
SyntaxError: invalid syntax 
+1

[更改Python交互提示 「>>>」]的可能的複製(http://stackoverflow.com/questions/33683744/change-python-interactive-prompt) –

+0

我一直欣賞的提示自己,因爲它讓我知道什麼是輸入和輸出。 –

+0

我通常只使用交互式控制檯,當我想特別顯示「當我輸入這個,我明白了」。這些提示對於從輸出中直觀地分離輸入有幫助。如果有重要的設置代碼,就像函數一樣,我會在文件中將它組合起來,然後將F5組合到交互式控制檯中。 – glibdud

回答

1

雅各布的答案是正確的,當涉及到發佈控制檯代碼。

然而,粘貼控制檯代碼到你自己的控制檯事實證明,IPython的所附帶蟒蛇分佈沒有得到來自IDLE控制檯代碼絆倒在「>>>」和「...」:

In[7]: >>> import os 
>>> os.getcwd() 
Out[7]: 'C:\\Projects\\xlsparser' 
1

您可以使用sys.ps1sys.ps2覆蓋解釋器的主要和次要提示。

>>> import sys 
>>> sys.ps2 = '' # removing the secondary prompt '... ' 
>>> sys.ps1 = '' # removing the primary prompt '>>> ' 
1 + 3 
4 
(1 + 
3 
) 
4 

否則,您可以使用文本編輯器刪除前導>>>...提示。

(VIM::%s/^\(>>>\|\.\.\.\) //

+1

當我複製/粘貼自己的控制檯代碼時,這將非常有用。但是,如何複製粘貼別人的控制檯代碼,但沒有「ps2」和「ps1」停用(除了在文本編輯器中手動自行清除代碼)呢? –

2

我寫了一個快速CodePen做到這一點 - 它很天真地替換所有初始 「>>>」 或 「...」 什麼也沒有序列。另外,您也可以使用下面的Python代碼:

import re 
def remove_prompts(code): 
    print(re.sub("^(>{3}|\.{3})(|$)", "", code, flags=re.M)) 

例如:

>>> remove_prompts(""" 
... Here's some code: 
... >>> def foo(): 
... ...  return "bar" 
... ...""") 

def foo(): 
    return "bar" 

>>> 
相關問題