在ipython中添加换行符

Ama*_*nda 52 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"
Run Code Online (Sandbox Code Playgroud)

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

JS.*_*JS. 60

一直在遭遇这个问题.我刚刚发现使用时Ctrl-qCtrl-j(那是小写的Q,J,不需要按住shift键)会在现有的IPython编辑会话中添加换行符.

for li in some_list: print(li)    
Run Code Online (Sandbox Code Playgroud)

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

for li in some_list:
print(li)
Run Code Online (Sandbox Code Playgroud)

IPython:5.2.1,iTerm2:3.0.15,macOS:10.12.6

  • 这对我有用,"ctrl-v"的其他答案对我不起作用但是`ctrl-q`让我放入了换行符 (4认同)
  • 注意:你不必放开 Ctrl 才能工作:你可以按住 `Ctrl` 并按 `q` 然后按 `j`。 (2认同)

yon*_*evy 53

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

In [1]: def foo(x):
   ...:     print x
   ...:     
In [2]: %edit _i1
Run Code Online (Sandbox Code Playgroud)

  • 对于我们这些刚接触iPython的人,我们还想指出`%edit _2`将重新打开上面示例中的编辑会话,`%edit -p`将始终打开您的上一个编辑会话. (6认同)
  • 另外,`%edit foo`将编辑`foo()`函数. (5认同)
  • 对我来说,`%edit` 打开了我*最不喜欢的*编辑器!我怎样才能要求另一个? (2认同)

Sha*_*umo 52

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

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

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

  • 您还可以使用ctrl-v,ctrl-i添加选项卡. (6认同)

Kam*_*chi 12

您可以使用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一起使用。


Ema*_*lev 6

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

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

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

  1. Qt控制台介绍
  2. 使用不错的每用户配置文件而不是命令行参数来配置IPython

    你对此感兴趣 ipython_qtconsole_config.py

  3. 如何在Windows 7上获得ipython图形控制台?


alp*_*989 5

一种简单的方法是使用;\运算符。;指示其命令结束并\指示该命令在新行中如下所示:

In[4]: password = "123";\
       username = "alpha"
Run Code Online (Sandbox Code Playgroud)

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


Rob*_*nde 5

Ctrl+q然后输入Enter。正如其他人指出的那样,Ctrl+q让您发送字符代码,但点击Ctrl+qthenEnter可能比Ctrl+qthen更自然Ctrl+j

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

  • “Ctrl+q Enter”快捷键不适用于 IPython 7.3.0,但适用于 IPython 5.3.0。我使用的是 git bash 2.18.0 + Windows 7。一种替代方法是使用“Ctrl+on”,它在两个 IPython 版本中都运行良好。 (2认同)