簡體   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