2013-09-23 48 views
2

我想在Anaconda shell中運行example的Python代碼。不幸的是,我想粘貼的聲明有從...開始的行。有沒有簡單的方法來運行這樣的聲明,而無需手動刪除...?我知道其他shell存在,但我不希望有儘量讓他們有蟒蛇在命令行中粘貼格式化的Python代碼

工作
>>> features = array([[ 1.9,2.3], 
...     [ 1.5,2.5], 
...     [ 0.8,0.6], 
...     [ 0.4,1.8], 
...     [ 0.1,0.1], 
...     [ 0.2,1.8], 
...     [ 2.0,0.5], 
...     [ 0.3,1.5], 
...     [ 1.0,1.0]]) 
+1

什麼都在那裏記事本+普照一樣最好的文本編輯器永遠。 – Shashank

+0

@ShashankGupta:你能解釋一下嗎? – Casebash

+2

Notepad ++可讓您從選定行數中刪除列。只需按住Alt鍵,突出顯示它並點擊刪除(幾乎是2秒鐘的操作),就可以從字面上取出所有這些點和空格。我確信有其他高級文本編輯器可以讓你做同樣的事情。 – Shashank

回答

5

Python的原生doctest parser是用來對付那些討厭的再版提示。 :)

>>> from doctest import DocTestParser 
>>> repr_code = ''' 
... >>> features = array([[ 1.9,2.3], 
... ...     [ 1.5,2.5], 
... ...     [ 0.8,0.6], 
... ...     [ 0.4,1.8], 
... ...     [ 0.1,0.1], 
... ...     [ 0.2,1.8], 
... ...     [ 2.0,0.5], 
... ...     [ 0.3,1.5], 
... ...     [ 1.0,1.0]]) 
... ''' 
>>> p = DocTestParser() 
>>> code = next(filter(None, p.parse(repr_code.strip()))) # Filter out the useless parts 
>>> print(code.source) 
features = array([[ 1.9,2.3], 
       [ 1.5,2.5], 
       [ 0.8,0.6], 
       [ 0.4,1.8], 
       [ 0.1,0.1], 
       [ 0.2,1.8], 
       [ 2.0,0.5], 
       [ 0.3,1.5], 
       [ 1.0,1.0]]) 
>>> array = list # Because it's cheaper than numpy 
>>> exec(code.source) # If you're feeling very lucky... 
>>> len(features) 
9  
+0

我猜這是有效的,但他們真的需要在shell中構建一些東西 – Casebash

2

據我正確理解你:你想刪除點。 我會做這種方式:

  1. 開拓vim
  2. i
  3. 粘貼文本(ctrl+v
  4. ESC退出Insert mode
  5. ctrl+v進入Visual Block
  6. 向上移動光標以選擇所有點
  7. x刪除它們。

比做到這一點是要與此格式化文本(可複製和粘貼)

+0

這很有效,我很驚訝控制檯沒有簡單的方式來運行從web複製的代碼 – Casebash