我有一个不可见的expected an indented block
错误,这可能是因为我使用制表符而不是空格。
当我打开“查找/替换”窗口并尝试在find
字段IDLE中输入 TAB 时,不出所料只是跳到replace
字段。
我该怎么做?
最终更新:
感谢您的所有答案,非常感谢。我的问题是python希望函数注释也缩进,即
def imdheladumb():
"""
I'm dum as hel
"""
不起作用,需要
def imdheladumb():
"""
I'm dum as hel
"""
答案 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)