Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何查找并替换空闲状态下所有带空格的选项卡_Python_Python Idle - Fatal编程技术网

Python 如何查找并替换空闲状态下所有带空格的选项卡

Python 如何查找并替换空闲状态下所有带空格的选项卡,python,python-idle,Python,Python Idle,我有一个不可见的错误,应该是缩进块错误,这可能是由于我使用制表符而不是空格造成的 当我打开“查找/替换”窗口并尝试在find字段中输入TAB时,空闲状态毫不奇怪地跳到replace字段 我该怎么做 最终更新: 谢谢你的回答,非常感谢。我的问题是python希望函数注释也缩进,也就是说 def imdheladumb(): """ I'm dum as hel """ 不起作用,它需要 def imdheladumb(): """ I'm dum as hel """

我有一个不可见的
错误,应该是缩进块
错误,这可能是由于我使用制表符而不是空格造成的

当我打开“查找/替换”窗口并尝试在
find
字段中输入TAB时,空闲状态毫不奇怪地跳到
replace
字段

我该怎么做


最终更新:

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

def imdheladumb():
"""
I'm dum as hel
"""
不起作用,它需要

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

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

您可以尝试将
\t
放入其中,但这仅适用于某些编辑器

大多数IDE都有一个功能,可以用预定义数量的空格自动替换选项卡。我建议把它打开

编辑:如果您出于任何原因在其他地方使用选项卡,则执行标准的查找和替换可能会很危险


如果你看,有一个选项叫做“tabifyregion”。这可能会让你更感兴趣。

应该有一个这样的应用程序

如果您喜欢过度杀戮,那么如何通过正则表达式运行代码,如:

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

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

但是,它确实允许您执行正则表达式搜索,正则表达式
\t
将匹配一个文本选项卡。因此,打开
正则表达式
复选框,并在
查找:
框中放入“
\t
”,在
替换:
框中放入4或8个空格(视情况而定)

但是,正如威尔所建议的,最好使用IDLE的功能,而不是尝试手动操作:选择带有选项卡(或不一致)缩进的代码块,转到
格式
菜单,然后选择
取消区域
。(或者只需点击control-6。)如果选项卡是用使用4个空格选项卡的编辑器插入的,您可能需要首先使用
新缩进宽度
并将其更改为4,然后
取消缩进区域


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

事实上,IDLE不允许你搜索文本制表符(当然,它会,但它们不会匹配任何东西)。但是IDLE中的tabify功能可能是OP真正想要的,而不是让搜索/替换工作,所以+1。我假设查找忍者块缩进错误不能简单地完成,否则会有一个应用程序为其提供?Awww,但如果它很简单,乐趣何在?根据您使用的编辑器,选项卡可能是8个空格而不是4个空格(制表符模式下空闲时为8)。这就是为什么这很困难。当然,如果标签使用一致,没有问题;不管你是使用4还是8。但是,除非它们与空格混合,否则OP一开始就不会出现任何错误。因此,你需要一些智能逻辑来尝试自动检测标签设置。emacs python模式有用于此的代码,并且通常是正确的(但当然不是100%的时间),所以有可能做得合理。所有答案都很感谢,这一个得到A(接受)为方便起见,为什么使用regex和\n搜索换行符对我不起作用?我将创建一个单独的问题。这是docstring,不是注释,但足够接近。IDLE应该强烈建议您使用缩进(例如,如果您在冒号后按Enter键,然后按
“”“
”,它将自动正确缩进);如果不是的话,你可能不知怎么搞砸了你的设置…