Добавление разрывов строк в ipython
Если ввести цикл for в iPython или любую команду с несколькими линиями, как мне вернуться и добавить к нему строки? Я запустил это:
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"
И понял, что мне нужно добавить строку, но я не могу просто нажать "enter" в iPython, b/c, который запускает эту команду. Могу ли я отредактировать эту многострочную команду w/in iPython?
Ответы
Ответ 1
Магическая функция %edit
в iPython позволяет редактировать код в вашем любимом редакторе и затем выполнять его, как если бы он был напечатан напрямую. Вы также можете редактировать код, который вы уже ввели в repl, поскольку он хранится в специальной переменной, например:
In [1]: def foo(x):
...: print x
...:
In [2]: %edit _i1
Ответ 2
Существует также способ добавить новую строку непосредственно в repl: ctrl-v, ctrl-j
ctrl-v в основном позволяет вам отправлять управляющий код, а затем ctrl-j - это код для новой строки (line-feed). Это немного неудобно печатать, но имеет то преимущество, что оно также работает в обычной оболочке Python, а также в самой Bash.
Изменить: по крайней мере, в iTerm2 вы можете назначить его и одной горячей клавише. Я установил ctrl-enter в "Отправить шестнадцатеричные коды" 0x16 0x0a. Также можно использовать cmd-enter или что-то еще.
Ответ 3
Для полноты: более новые версии IPython (0.11+) имеют очень приятную графическую консоль, которая позволяет вам перемещать свой код со стрелками и даже перемещать курсор мышью.
В многострочных операциях некоторые клавиши выполняют специальную функцию (стрелки для навигации, Enter для вставки разрыва строки и другие). Вам нужно будет поместить курсор в конец последней строки инструкции, чтобы получить поведение по умолчанию, например. стрелка вверх ↑ означает "предыдущий оператор" вместо "переместить курсор на предыдущую строку". Или получите Enter для обозначения "выполнить код" вместо "вставить разрыв строки в середине кода".
Документация по нему немного разрежена и фрагментирована на разных страницах, поэтому вот основные три ссылки для начала работы с ней:
Ответ 4
Некоторое время страдал этой проблемой. Просто обнаружил, что Cntrl-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