在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中编辑多行命令吗?

遇到这个问题已经有一段时间了。我刚刚发现,当使用Ctrl-qCtrl-j(小写q,j,无需按住1shift

for li in some_list: print(li)    

将光标移动到冒号后并按Ctrl-qCtrl-j

for li in some_list:
print(li)

IPython:5.2.1,iTerm2:3.0.15,macOS:10.12.6

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或其他任何方式。

您可以使用ctrl+on(即按住控制按钮并输入字符'o','n')。你也可以分两步来做——ctrl+octrl+n,但我发现前者更容易。

  • ctrl-o-进入多行模式
  • ctrl-n-访问命令历史。但由于并没有向前的历史记录,所以光标只是移动到下一行

我验证了它在运行git bash 2.18.0+windows 7的机器上可以与IPython 5.3.0和IPython 7.3.0一起工作。

一种简单的方法是使用;运算符。;表示命令结束,表示命令在新行中跟随,如下所示:

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

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

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

在多行语句中,一些键具有特殊功能(箭头用于导航,输入插入换行符和其他键)。您必须将光标定位在语句的最后一行末尾,才能获得默认行为,例如,获得向上箭头表示";先前的陈述";而不是";将光标移动到前一行";。或者使输入表示";执行代码";而不是";在代码中间插入换行符";。

关于它的文档有点稀疏,并且分散在不同的页面中,因此这里是开始使用它的三个重要链接:

  1. Qt控制台简介

  2. 使用漂亮的每个用户配置文件而不是命令行参数配置IPython

    您对ipython_qtconsole_config.py感兴趣

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

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

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

聚会迟到了!但我注意到很多人都在谈论使用Ctrl组合来添加额外的行。直到我看到一条关于它是Emacs绑定的评论,这才对我起作用。我已经将我的联机编辑器设置为Vi,如果你也设置了,那么按Esc进入";"正常";模式,然后按o(如果您在该行后面,则按O)。就像在正常的Vi(m)中一样。对我有用!

最新更新