【问题标题】:Python: Spaces to Tabs?Python:空格到制表符?
【发布时间】:2011-04-03 04:34:01
【问题描述】:

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

是否有编程方式(注意:programmatic,不使用编辑器)将此文件转换为仅使用选项卡? (意思是,用单个tab 替换任何现有的4-spaces)?

如果有 python 代码示例或 linux 命令来执行上述操作,将不胜感激。谢谢。

【问题讨论】:

  • 您不想将 4 个空格转换为制表符。这是针对 PEP-8 的。 4 个空格是标准的 - 也适合你 :) 除此之外:查看 Python 的 tabcleaner.py 脚本并从那里撕下相关代码。
  • @Javier:谢谢。但不确定如何应用它。

标签: python linux


【解决方案1】:

听起来像是sed 的任务:

sed -e 's/    /\t/g' test.py > test.new

[放一个真正的标签而不是\t]

不过……

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

--PEP 8 -- Style Guide for Python Code

【讨论】:

  • 正是我想要的。谢谢。
  • @user540009:我希望你参考 PEP 8 :-)
  • 谢谢。只是为了记录,您如何将每个“标签”替换为 4 个空格? (什么是反向sed 命令)?
  • @user540009: 's/\t/ /g' (中间斜杠前有一个制表符,后有四个空格)是相反的。或者你可以使用 Python 的 expandtabs()
  • 如果其他人在实际键入选项卡时遇到问题,sed -e $'s/ /\t/g' 将在 \t 扩展为真正的选项卡字符的情况下进行切换 :)
【解决方案2】:

您可以尝试迭代文件并替换例如

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

或者你可以试试像sed/awk这样的*nix工具

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

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

【讨论】:

  • 很好的答案,虽然下面的一个班轮更好。
猜你喜欢
  • 2020-11-22
  • 2012-05-29
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 2020-01-24
  • 2011-01-03
相关资源
最近更新 更多