在ipython中添加换行符

在ipython中添加换行符,python,ipython,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]

如果在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中点击“enter”,这是运行该命令的b/c。因此,我可以在iPython中编辑多行命令吗?

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

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

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

ctrl-v基本上允许您发送控制代码,然后ctrl-j是换行符(换行符)的代码。键入有点笨拙,但它的优点是既可以在常规Python shell中工作,也可以在Bash中工作


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

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

在多行语句中,某些键具有特殊功能(箭头导航、回车插入换行符等)。您必须将光标定位在语句最后一行的末尾,以获得默认行为,例如,获得向上箭头↑ 表示“上一条语句”,而不是“将光标移到上一行”。或者进入“意思是执行代码”,而不是“在代码中间插入断线”。 关于它的文档在不同的页面中有点稀疏和零碎,因此这里是开始使用它的三个基本链接:

  • 您感兴趣的是
    ipython\u qtconsole\u config.py


  • 这个问题已经困扰了一段时间了。我刚刚发现,当使用Ctrl-qCtrl-j(即小写的Q,j,无需按住shift键)时,将向现有的IPython编辑会话添加换行符

    for li in some_list: print(li)    
    
    在冒号后移动光标并按Ctrl-qCtrl-j


    IPython:5.2.1,iTerm2:3.0.15,macOS:10.12.6

    一种简单的方法是使用
    \操作员<代码>
    表示命令结束,而
    \
    表示命令在新行中的位置,如下所示:

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

    这将允许您在ipython中使用多行命令,而无需调用编辑器

    键入
    Ctrl+q
    ,然后
    Enter
    。正如其他人指出的,
    Ctrl+q
    允许您发送字符代码,但是点击
    Ctrl+q
    然后点击
    Enter
    可能比点击
    Ctrl+q
    然后点击
    Ctrl+j
    更自然


    另一个选项是键入
    ,然后
    输入
    ,然后写入并删除
    )。此解决方案类似于键入
    ;\
    表示语句未完成的解决方案。

    您可以在
    上使用
    ctrl+(即按住控制按钮并输入字符“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一起工作。

    我确实查看了文档,但不太清楚我要找的是什么。对于我们这些更新到IPython的人,只想指出,
    %edit\u 2
    将在exa中重新打开编辑会话上面的示例和
    %edit-p
    始终打开您最后的编辑会话。对于我来说
    %edit
    打开了我最不喜欢的编辑器!我如何请求其他编辑器?@peer
    %edit
    使用环境变量
    editor
    ,许多命令行实用程序在需要打开编辑器时都会使用该变量。例如,如果运行
    EDITOR=vim ipython
    -将使用vim。您可以在bashrc/zshrc/etc.文件中将其设置为不同的值,以便始终使用。如果您在家里玩,结果证明真正的解决方案是gedit+ipython侦听器。编辑并运行,而不是尝试在终端中组成循环。您还可以使用ctrl-v、ctrl-i添加选项卡。Or ctrl-v,tab添加一个选项卡这也适用于使用ConEmu的Powershell中的Windows。^ ^这对我有效,使用
    ctrl-v
    的其他答案对我不起作用,但
    ctrl-q
    让我输入断行符注意:你不必放开ctrl键,这项功能才有效:你可以按住
    ctrl
    并按
    q
    然后按
    j
    。我很困惑有两种解决方案具有相似的向上投票权…但使用不同的键盘快捷键。此解决方案使用ctrl+q,ctrl+j@ShawnFumo的解决方案使用ctrl+v,ctrl+j。怎么会有两种不同的键盘快捷键都可以工作?@javadba:这两种组合用于在Emac的minibuffer中添加换行符。我抓住了一个机会可能适用于IPython。
    Ctrl+q Enter
    快捷方式不适用于IPython 7.3.0,但适用于IPython 5.3.0。我使用的是git bash 2.18.0+Windows 7。另一种选择是使用
    Ctrl+on
    ,这在两个IPython版本中都能很好地工作。
    In[4]: password = "123";\
           username = "alpha"