将Python缩进从空格转换为制表符的工具?

12

我有一些使用空格缩进的.py文件,我想把它们转换成制表符。

我可以很容易地使用正则表达式拼凑出一个解决方案,但我可以想到几个极端情况这种方法可能会失败。有没有一种工具可以通过解析文件并以与python解释器相同的方式确定缩进级别来完成这项任务?

5个回答

17

如果要转换的文件不多,可以在 vim 中打开它们,并使用 :retab 命令。

有关更多信息,请参阅vim文档


16

Python包含一个用于相反操作(将制表符转换为空格)的脚本。 对于我来说,它是C:\Python24\Tools\Scripts\reindent.py


即使在py26上,这也不适用于Linux。 - sorin
stringvar.expandtabs(tabsize=8) 是相反的。2018年4月 v2.17 - SDsolar

12

:retab 命令将制表符转换为空格,而 :retab! 将空格转换为制表符。1 个制表符等于 4 个空格,1 个空格等于 1 个制表符,具体取决于您的制表符设置。


+1,我不知道它可以双向工作;它使用了“tabstop”设置,大概是这样吧? - James

4
如果您使用Linux,您可能也会尝试使用unexpand

将每个文件中的空格转换为制表符,并写入标准输出。如果没有指定FILE,或者FILE是“-”,则读取标准输入。


如果您需要的话,可以找到Win32版本。 - sorin

3
在emacs中,M-x tabify会尽可能地将空格转换为制表符。您可能需要适当设置tab-width变量。
我不知道这是否解决了您关于空格与python解释器以相同方式解释的问题,但是您可以加载python-mode并使用M-x indent-region

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接