Python:空格转制表符?

5

我有一个 Python 文件(/home/test.py),其中混合了空格和制表符。

是否有一种编程方式(注意:是编程方式,不是使用编辑器)将此文件转换为仅使用制表符?(即,用单个tab替换任何现有的4-spaces出现次数)?

非常感谢提供 Python 代码示例或 Linux 命令来完成以上操作。谢谢。


4
你不想将4个空格转换为制表符,这违反了PEP-8规范。4个空格是标准 - 对你也是如此 :) 除此之外,请查看Python的tabcleaner.py脚本并从中提取相关代码。 - user2665694
@Javier:谢谢。不过我不确定如何应用它。 - user3262424
3个回答

8
听起来像是使用 sed 的任务:
sed -e 's/    /\t/g' test.py > test.new

[请使用真正的制表符代替 \t]

然而...

每个缩进级别使用 4 个空格。

--PEP 8 -- Python 代码风格指南


1
@user540009:我希望你指的是 PEP 8 :-) - johnsyweb
谢谢。为了记录,如何用4个空格替换每个“制表符”?(反向的sed命令是什么)? - user3262424
@user540009: 在这个命令中,有一个制表符在中间斜杠之前,然后是四个空格。它的作用是将所有制表符替换为四个空格。如果要反转操作,可以使用's/ \ t / / g'。或者您可以使用Python的expandtabs()函数。 - johnsyweb
1
如果其他人在输入制表符时遇到问题,可以使用“sed -e $'s/ /\t/g'”命令将其转换为实际的制表符字符“\t” :) - Sam

1

你可以尝试迭代文件并进行替换操作,例如:

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    print line.replace("    ","\t")

或者您可以尝试使用*nix工具,例如sed/awk

$ awk '{gsub(/    /,"\t")}1' file > temp && mv temp file

$ ruby -i.bak -ne '$_.gsub!(/    /,"\t")' file

好的回答,虽然下面那个一行代码更好。 - user3262424

0

另一种实现这一点的方法是安装black-with-tabs包。然后运行 black(如果您已经安装了原始版本的 black,则需要卸载)

black test.py

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