在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打“input”。 那么我可以在iPython中编辑多行命令吗?

iPython中的%edit魔术function可让您在您最喜爱的编辑器中编辑代码,然后将其作为直接键入来执行。 您还可以编辑已经键入到repl中的代码,因为它存储在一个特殊的variables中,例如:

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

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

ctrl-v基本上可以让你发送一个控制代码,然后ctrl-j是一个换行符(换行)的代码。 键入有点尴尬,但具有在常规Python shell以及Bash本身中工作的优点。

编辑:至less在iTerm2中,您也可以将其分配给一个热键。 我将ctrl-input设置为“发送hex代码”0x16 0x0a。 也可以使用cmd-enter或其他的。

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

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

关于它的文档在不同的页面上有点稀疏和分散,所以这里是开始使用它的基本三个链接:

  1. 介绍到Qt控制台
  2. configurationIPython使用很好的每用户configuration文件而不是命令行参数

    您对ipython_qtconsole_config.py感兴趣

  3. 如何在Windows 7上获得ipythongraphics控制台?

一直在遭受这个问题。 刚刚发现Cntrl-q Ctrl-j (小写的Q,J,不需要按住Shift键)会在现有的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