如何在空闲时找到并替换所有带空格的选项卡

时间:2012-12-03 21:11:19

标签: python python-idle

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

当我打开“查找/替换”窗口并尝试在find字段IDLE中输入 TAB 时,不出所料只是跳到replace字段。

我该怎么做?


最终更新:

感谢您的所有答案,非常感谢。我的问题是python希望函数注释也缩进,即

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

不起作用,需要

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

3 个答案:

答案 0 :(得分:2)

执行此操作的一般方法是从文档中复制制表符(或者只在随机文本编辑器中执行一个并复制它),然后将其放入字段中。

您可以尝试将\t放在那里,但这只适用于某些编辑器。

大多数IDE都具有自动使用预定义数量的空格替换选项卡的功能。我建议转过来......

编辑:如果您出于任何原因在其他地方使用标签,那么执行标准查找并替换可能会很危险。

如果你看here,就有一个名为“tabify region”的选项。这对你来说可能更有趣。

答案 1 :(得分:2)

IDLE不允许您搜索文字制表符。您可以将一个粘贴到搜索框中(按照意愿建议),但它永远不会匹配任何内容。

但是,它确实允许您进行正则表达式搜索,而正则表达式\t将匹配文字选项卡。因此,请启用Regular expression复选框,并将\t放在Find:框中,并在Replace:框中放置4或8个空格(视情况而定)。

但是,正如所建议的那样,最好使用IDLE的功能而不是尝试手动执行:选择带有选项卡(或不一致)缩进的代码块,转到Format菜单,然后选择{{ 1}}。 (或者只是按下control-6。)如果使用使用4空格选项卡的编辑器插入选项卡,则可能需要先使用Untabify Region并将其更改为4,然后再更改为New Indent Width

当您编写不一致的代码时,IDLE没有任何代码可以猜测您的选项卡大小。我所知道的唯一编辑就是emacs。如果您只是在emacs中打开文件,它会尝试猜测您的设置,然后您可以选择整个缓冲区和Untabify Region。如果它猜对了,你就是金色的;如果它猜错了,不要保存缓冲区,因为现在它将更难修复。 (如果你是世界上3个知道如何阅读emacs lisp但不喜欢emacs的人之一,你可以查看untabify-region来源,看看它是如何发挥作用的。)

答案 2 :(得分:1)

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

如果您喜欢矫枉过正,那么通过正则表达式运行代码会如何:

re.sub('\t', '\s\s\s\s', yourCode)
相关问题