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