在python代码中找到除法运算符的所有用法

时间:2019-01-11 15:43:30

标签: python regex

我想在我的python代码中找到所有使用除法运算符/的实例。我的本能是使用正则表达式。该表达式需要过滤出/的非分区用法,即路径名。我想出的最好的方法是[ A-z0-9_\)]/[ A-z0-9_\(]。这将在

中找到除法运算符
foo/bar
foo / bar
foo/(bar*baz)
foo / 10
1/2
etc...

但也会与/之类的"path/to/my/file"

匹配

有人可以提出更好的正则表达式吗?另外,有没有一种非正则表达式的方法来找到除法?

编辑:要澄清:

我不必使用python来执行此操作。我只想知道除法操作员的位置,所以我可以手动/目视检查它们。我可以忽略注释的代码

1 个答案:

答案 0 :(得分:5)

您可以使用 ast 模块将Python代码解析为抽象语法树,然后遍历该树以查找出现除法表达式的行号。

example = """c = 50
b = 100
a = c / b
print(a)
print(a * 50)
print(a / 2)
print("hello")"""

import ast
tree = ast.parse(example)
last_lineno = None
for node in ast.walk(tree):
    # Not all nodes in the AST have line numbers, remember latest one
    if hasattr(node, "lineno"):
        last_lineno = node.lineno

    # If this is a division expression, then show the latest line number
    if isinstance(node, ast.Div):
        print(last_lineno)