在ipython中添加换行符

时间:2012-11-23 22:24:13

标签: python ipython

如果在iPython或任何多行命令中引入for循环,我该如何返回并为其添加行?我跑了这个:

for row in table.find_all('tr'):
    cells = row.find_all('td')
    for c,cell in enumerate(cells):
        print c,":",cell.get_text().strip()
    try:
        this = cells[0]
        that = cells[1]
        the_docket = cells[2]
        other_thign = cells[3]
        jumble = re.sub('\s+',' ',str(cells[5])).strip()            
    except:
        "Nope"

并意识到我需要为它添加一条线,但我无法点击"输入"在iPython中,运行命令的b / c。那么我可以在iPython中编辑那个多行命令吗?

8 个答案:

答案 0 :(得分:53)

还有一种方法可以直接在repl中添加换行符:ctrl-v,ctrl-j

ctrl-v基本上允许您发送控制代码,然后ctrl-j是换行符的代码(换行符)。输入有点尴尬,但它的优势还在于常规Python shell以及Bash本身。

编辑:至少在iTerm2中,您也可以将其分配给一个热键。我将ctrl-enter设置为0x16 0x0a的“发送十六进制代码”。也可以使用cmd-enter或其他任何内容。

答案 1 :(得分:49)

iPython中的%edit魔术功能允许您在您喜欢的编辑器中编辑代码,然后执行它就像直接输入一样。您还可以编辑已经输入到repl中的代码,因为它存储在特殊变量中,例如:

In [1]: def foo(x):
   ...:     print x
   ...:     
In [2]: %edit _i1

答案 2 :(得分:43)

一直在遭受这个问题。我刚刚发现当使用 Ctrl-q Ctrl-j 时(那个小写的Q,J,不需要按住 shift key)将为现有的IPython编辑会话添加换行符。

for li in some_list: print(li)    

在冒号后移动光标并按 Ctrl-q Ctrl-j

for li in some_list:
print(li)

IPython:5.2.1,iTerm2:3.0.15,macOS:10.12.6

答案 3 :(得分:5)

为了完整性:较新的IPython版本(0.11 +)有一个非常漂亮的图形控制台,允许您使用箭头导航代码,甚至用鼠标重新定位光标。

在多行语句中,某些键具有特殊功能(箭头导航,输入以插入换行符等)。您必须将光标定位在语句最后一行的末尾才能获得默认行为,例如获取向上箭头表示“上一个语句”而不是“将光标移动到上一行”。或者输入表示“执行代码”而不是“在代码中间插入换行符”。

关于它的文档在不同的页面中有点稀疏和碎片化,因此以下是开始使用它的必要三个链接:

  1. Intro to the Qt Console
  2. Configuring IPython using nice per-user profile files instead of command line arguments

    您对ipython_qtconsole_config.py

  3. 感兴趣
  4. How to get an ipython graphical console on Windows 7?

答案 4 :(得分:4)

一种简单的方法是使用;\运算符。 ;表示命令结束,\表示该命令后面的新行如下:

In[4]: password = "123";\
       username = "alpha"

这将让您在ipython中拥有多个行命令而无需调用编辑器

答案 5 :(得分:3)

先输入Ctrl+q,然后再输入Enter。正如其他指出的那样,Ctrl+q允许您发送字符代码,但是先按Ctrl+q然后按EnterCtrl+q然后按Ctrl+j更自然。

另一种选择是先键入(,然后键入Enter,然后写入并删除(。此解决方案类似于您输入;\来声明语句未完成的解决方案。

答案 6 :(得分:3)

您可以使用ctrl+on(即,按住控制按钮并在输入时按住'o','n'字符)。您也可以分两个步骤进行操作-ctrl+o ctrl+n,但我发现前者更容易。

  • ctrl-o-进入多行模式
  • ctrl-n-继续访问命令历史记录。 但是由于没有前进的历史记录,因此光标只会移至下一行。

我已验证它可以在运行git bash 2.18.0 + Windows 7的计算机上同时使用IPython 5.3.0和IPython 7.3.0。

答案 7 :(得分:0)

聚会有点晚了!但我注意到很多人都在谈论使用 Ctrl 组合来添加额外的行。这对我不起作用,直到我看到有关它是 Emacs 绑定的评论。我已经将我的内嵌编辑器设置为 Vi,如果你也有,那么在你想添加额外的行之前按 Esc 进入“正常”模式,然后按 o(或 { {1}}(如果您在后面)。就像在正常的 Vi(m) 中一样。对我有用!