繁体   English   中英

在ipython中添加换行符

[英]Adding line breaks in 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中编辑那个多行命令吗?

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

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

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

一直在遭遇这个问题。 我刚刚发现当使用Ctrl-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

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

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

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

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

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

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

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

    您对ipython_qtconsole_config.py感兴趣

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

一种简单的方法是使用;\\运算符。 ; 发出命令结束信号和\\表示该命令后面的新行如下:

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

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

键入Ctrl+q然后Enter 正如其他人指出的那样, Ctrl+q允许你发送一个字符代码,但Ctrl+q然后Enter可能比Ctrl+q然后Ctrl+j更自然。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM