我试图在Python代码中查找所有出现的文字浮点值。我可以在科莫多(或以其他任何方式)这样做吗?

换句话说,我想查找每条使用0.0或1.5或1e5之类的行,假定它被Python解释为浮点文字(例如,没有注释)。

我正在将Komodo 6.0与Python 3.1结合使用。

如果可能的话,找到字符串和整数文字的方法也将很不错。

最佳答案

我们的SD Source Code Search Engine (SCSE)可以轻松做到这一点。

SCSE是一种通过索引感兴趣的源代码语言的元素来搜索大型源代码库的工具,比grep快得多。然后可以提出查询,查询使用索引来快速定位搜索结果。查询和匹配显示在GUI中,单击匹配将显示包含匹配的源代码块。

SCSE知道它所编制的每种语言的词法结构都以该语言的编译器为准。 (它使用精确编程语言处理器家族的front ends;该家族很大,并且恰好包含OP的目标语言Python / Perl / Java / ...)。因此,它确切地知道标识符,注释和文字(整数,浮点数,字符或字符串)的位置,以及它们的内容。

SCSE查询由表示感兴趣的语言元素序列的命令组成。查询

'for' ... I '=' N=103


在任意标识符(I)附近(“ ...”)处找到一个for关键字,该标识符以数字值(“ N”)为103初始化(“ =”)。由于SCSE理解语言结构,因此它忽略了语言空白在标记之间,例如,无论中间有空格,空格,换行符还是注释,它都能找到它。

查询令牌I,N,F,S,C分别代表I(标识符),自然(数字),F(浮动),S(tring)和C(omment)。 OP最初的问题,即查找所有浮点数,因此几乎是微不足道的查询

F


同样,用于查找所有String文字(“ S”)和整数文字(“ N”)。如果您只想查找Pi附近的值的副本,则可以添加上下限约束:

F>3.14<3.16


(在大型Fortran代码上运行此代码非常有趣;您会看到Pi的各种不良近似)。

SCSE不会在注释或字符串中找到Float,因为它清楚地知道了区别。编写一个grep样式的表达式来处理所有奇怪的组合以消除空格或引号和注释定界符显然要麻烦得多。 Grep不是这样做的方法。

07-26 08:42
查看更多