【问题标题】:Detect the indentation style of a source file检测源文件的缩进样式
【发布时间】:2019-02-08 22:14:48
【问题描述】:

我正在编写一个与将代码注入 Python 代码并重新编译有关的工具。

我需要能够检测给定的源文件(或其中的函数)是否使用空格或制表符作为缩进符号。有没有简单的方法?

【问题讨论】:

标签: python metaprogramming indentation


【解决方案1】:

您可以尝试通过换行符解析文档而不进行修剪,然后检查每一行是否以空格或制表符开头,然后在检测到任何一个时立即退出?例如:

re.match(' ', line): -> space
re.match('\t', line): -> tab

或者,您可以使用startwith() 方法 - 在循环中运行它并在检测到行首的制表符或空格时立即退出:

' foo'.startswith(('\s'))
True
'   foo'.startswith(('\t'))
True

我认为可能存在的问题是文件是否使用制表符,但有人在输入注释 (#) 之前按下了空格 - 但我想检测 cmets 并忽略这些应该不难。

【讨论】:

  • re.match(r'\s', line) 实际上也匹配选项卡。只需将空格写为文字空格' ' 并将制表符写为文字制表符' ' 或'\t'(不是r'\t')。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
相关资源
最近更新 更多