Найти все виды использования оператора деления в коде Python - PullRequest
0 голосов
/ 11 января 2019

Я хочу найти все экземпляры в моем коде 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 голосов
/ 11 января 2019

Вы можете проанализировать ваш код Python в абстрактном синтаксическом дереве с помощью модуля ast , а затем пройтись по дереву, чтобы найти номера строк, где появляются выражения деления.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...