Макет скрипта парсера Python - PullRequest
0 голосов
/ 24 августа 2010

Я пишу простой синтаксический анализатор Python, где я перебираю каждую строку в файле и обрабатываю ее дальше, если выполняются правильные условия.Мой короткий старт:

    def identify(hh_line):
        if(re.match(regex.new_round, hh_line)):
            m = re.match(regex.new_round, hh_line)
            # insert into psql

        ...

        if(re.match...

.. и мне было интересно, как лучше всего (практиковаться) подойти к этой задаче, поскольку я впервые пишу на Python.

Спасибо!=)

1 Ответ

3 голосов
/ 24 августа 2010

Прежде всего, излишне запускать совпадение дважды - вместо этого запускайте его, сохраняйте результат и отклоняйте от него:

m = re.match(regex.new_round, hh_line)
if m:
    # ...

Далее, если у вас есть куча комбинаций регулярных выражений -> обработки, вы можете вместо этого сделать наложение регулярных выражений -> отображений функций, а затем просто выполнить итерации по нему:

def process_a(data):
    # ...

def process_b(data):
    # ...

regex_to_process = {
    'regex_a': process_a,
    'regex_b': process_b,
}

for hh_line in <file object>:
    for regex,process in regex_to_process.iteritems():
        m = re.match(regex, hh_line)
        if m:
            process(hh_line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...