我的Jupyter笔记本充满了大量的空白行。目前,我必须点击D + D删除每一行,如here所述。有没有办法自动删除所有空行?
答案 0 :(得分:1)
Esc D D
删除当前单元格,是指空白单元格而不是空行?
如果是这样,将以下代码放入~/.jupyter/custom/custom.js
会在工具栏中添加一个按钮,删除所有空白单元格
define([
'base/js/namespace',
'base/js/events'
], function(Jupyter, events) {
events.on('app_initialized.NotebookApp', function(){
Jupyter.toolbar.add_buttons_group([
{
'label' : 'delete all blank cells',
'icon' : 'fa-ban', // select your icon from http://fortawesome.github.io/Font-Awesome/icons
'callback': function () {
var cells = Jupyter.notebook.get_cells();
cells.forEach(function(cell) {
if(cell.get_text() === "") {
var index = Jupyter.notebook.find_cell_index(cell);
Jupyter.notebook.delete_cell(index);
}
});
}
}
]);
});
});
如果您更喜欢键盘快捷键而非按键,请使用此键(我已使用Alt-D
,但您可以随意将其更改为笔记本电脑本身未保留的任何内容,您可以查看单击帮助>键盘快捷键,现有的键盘快捷键:
define([
'base/js/namespace',
'base/js/events'
], function(Jupyter, events) {
events.on('app_initialized.NotebookApp', function(){
Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Alt-D', {
help : 'delete blank cells',
help_index : 'zz',
handler : function (event) {
var cells = Jupyter.notebook.get_cells();
cells.forEach(function(cell) {
if(cell.get_text() === "") {
var index = Jupyter.notebook.find_cell_index(cell);
Jupyter.notebook.delete_cell(index);
}
});
return false;
}}
);
});
});
如果您打算删除单元格中的空白行,则需要在CodeMirror中进行更多的工作。这是一个按钮版本:
define([
'base/js/namespace',
'base/js/events'
], function(Jupyter, events) {
events.on('app_initialized.NotebookApp', function(){
Jupyter.toolbar.add_buttons_group([
{
'label' : 'delete all blank lines',
'icon' : 'fa-ban', // select your icon from http://fortawesome.github.io/Font-Awesome/icons
'callback': function () {
var cells = Jupyter.notebook.get_cells();
cells.forEach(function(cell) {
if(cell.cell_type === "code") {
var cm = cell.code_mirror;
cm.eachLine(function(line) {
if(!line.text) {
var line_num = cm.getLineNumber(line);
cm.setSelection({line: line_num - 1, ch: 255},{line: line_num + 1, ch: 0});
cm.replaceSelection("");
}
});
}
});
}
},
]);
这是键盘快捷键版本:
define([
'base/js/namespace',
'base/js/events'
], function(Jupyter, events) {
events.on('app_initialized.NotebookApp', function(){
Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Alt-C', {
help : 'delete blank lines',
help_index : 'zz',
handler : function (event) {
var cells = Jupyter.notebook.get_cells();
cells.forEach(function(cell) {
if(cell.cell_type === "code") {
var cm = cell.code_mirror;
cm.eachLine(function(line) {
if(!line.text) {
var line_num = cm.getLineNumber(line);
cm.setSelection({line: line_num - 1, ch: 255},{line: line_num + 1, ch: 0});
cm.replaceSelection("");
}
});
}
});
return false;
}}
);
});
});
如果你连续有多个空白行,你可能需要激活它们几次 - 就像我尝试使用它们时一样,它们不会删除第一遍中的所有空白行,但是在2或3之后它们会删除所有内容。