2013-09-23 49 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