bpython 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]

the_docket = cells[2]

other_thign = cells[3]

jumble = re.sub('\s+',' ',str(cells[5])).strip()

except:

"Nope"

并且意识到我需要在其中添加一行,但是我不能仅仅在运行命令的b / c iPython中点击“输入”。 那么我可以在iPython中编辑多行命令吗?

Amanda asked 2020-01-23T08:46:07Z

7个解决方案

52 votes

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

In [1]: def foo(x):

...: print x

...:

In [2]: %edit _i1

yonilevy answered 2020-01-23T08:46:47Z

52 votes

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

基本上,您可以使用ctrl-v发送控制代码,然后ctrl-j是换行符(换行)的代码。 键入它有点尴尬,但它的优点是还可以在常规的Python Shell和Bash本身中使用。

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

ShawnFumo answered 2020-01-23T08:47:16Z

52 votes

经历了一段时间这个问题。 我刚刚发现,在使用Ctrl-qCtrl-j(即小写的Q,J,无需按住Shift键)时,会将换行符添加到现有的IPython编辑会话中。

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

JS. answered 2020-01-23T08:47:45Z

10 votes

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

2715083380948948993024-进入多行模式

2715083380948948993024-前进的访问命令历史记录。但是由于没有向前的历史记录,因此光标仅移至下一行。

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

Kamaraju Kusumanchi answered 2020-01-23T08:48:19Z

5 votes

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

在多行语句中,某些键具有特殊功能(箭头用于导航,Enter用于插入换行符,其他则用于)。 您必须将光标置于语句的最后一行的末尾,以获取默认行为,例如 获取向上箭头↑表示“上一条语句”,而不是“将光标移至上一行”。 或者让Enter表示“执行代码”,而不是“在代码中间插入换行符”。

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

Qt控制台简介

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

您对ipython_qtconsole_config.py感兴趣

如何在Windows 7上获取ipython图形控制台?

Emanuil Tolev answered 2020-01-23T08:49:06Z

5 votes

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

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

username = "alpha"

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

alpha_989 answered 2020-01-23T08:49:31Z

4 votes

如其他指出的那样,键入(,然后键入Enter。(允许您发送字符代码,但是按;\,则Enter比Ctrl+q然后Ctrl+j更自然。

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

Robert Vanden Eynde answered 2020-01-23T08:49:56Z

你可能感兴趣的:(bpython,ipython)