如何用id中的空格查找和替换所有选项卡

2024-06-16 09:02:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个不可见的expected an indented block错误,这可能是由我使用制表符而不是空格引起的。

当我打开“find/replace”窗口并尝试在find字段IDLE中输入选项卡时,毫不奇怪地只是跳转到replace字段。

我该怎么做?


最终更新:

谢谢你的回答,非常感谢。我的问题是python希望函数注释也缩进,即

def imdheladumb():
"""
I'm dum as hel
"""

不起作用,必须

def imdheladumb():
    """
    I'm dum as hel
    """

Tags: andefas错误findblockreplace制表符
3条回答

应该有一个应用程序。;)

如果你喜欢过度杀戮,那么通过一个正则表达式运行你的代码,比如:

re.sub('\t', '\s\s\s\s', yourCode)

IDLE不允许搜索文本制表符。您可以将一个粘贴到搜索框中(如will所建议的),但它永远不会匹配任何内容。

但是,它确实允许您执行正则表达式搜索,正则表达式\t将匹配一个文本选项卡。所以,打开Regular expression复选框,将\t放入Find:框中,并将4或8个空格(视情况而定)放入Replace:框中。

但是,正如将要建议的那样,最好使用IDLE的特性,而不是尝试手动操作:选择带有标签(或不一致)缩进的代码块,转到Format菜单,然后选择Untabify Region。(或者只点击control-6。)如果插入的选项卡带有使用4空间选项卡的编辑器,则可能需要首先使用New Indent Width,然后将其更改为4,然后Untabify Region

IDLE没有任何代码来猜测编写不一致代码时的标签大小。据我所知,唯一的编辑是emacs。如果您只是在emacs中打开文件,它会尝试猜测您的设置,然后您可以选择整个缓冲区和untabify-region。如果它猜对了,你就是黄金;如果它猜错了,不要保存缓冲区,因为现在它将更难修复。(如果您是世界上三个知道如何阅读emacs lisp但不喜欢emacs的人之一,您可以查看python-mode.el源代码并了解它的魔力。)

一种通用的方法是从文档中复制一个制表符(或者在任意文本编辑器中复制一个),然后将其放入字段中。

您可以尝试将\t放入其中,但这仅在某些编辑器中有效。

大多数ide都有一个功能,可以用预定义的空格数自动替换制表符。我建议打开。。。

编辑:如果出于任何原因在其他地方使用制表符,那么执行标准的查找和替换可能会带来危险。

如果你看here,有一个叫做“tabify region”的选项。你可能更感兴趣。

相关问题 更多 >