Захват значений из разделов в файле: Python - PullRequest
0 голосов
/ 30 апреля 2018
# line 1 contains some info
# line 1 contains some info
# Creation date: Tue Aug 16 17:13:37 2016

# line 3 contains some info
# line 4 contains some info

DEFAULT_TEMPLATE
{
    DELAY_TIME        30;
    TEMPLATE_FNAME    "ABC";
    VENDOR_DELAYED    "/";
    DELAY_FNAME       "ABC_NAME";
    DELAY_FVALUE      "DELAYED-30";
    DELAY_FMODE       "END";
}

TEMPLATE
{

  2548                # some-details1
  {
    DELAY_TIME        0;
    DELAY_FNAME       "DSPLY_NAME";
    DELAY_FVALUE      "DELAYED-0";
    DELAY_FMODE       "END";
  }

  1                   # some details2
  {
    DELAY_TIME        20;
    DELAY_FNAME       "DSPLY_NAME";
    DELAY_FVALUE      "DELAYED-20";
    DELAY_FMODE       "END";
  }

  2                   # some details3
  {
    DELAY_TIME        20;
    DELAY_FNAME       "DSPLY_NAME";
    DELAY_FVALUE      "DELAYED-20";
    DELAY_FMODE       "END";
  }
}

У меня есть формат файла, как указано выше, и я хочу захватить детали только из раздела «ШАБЛОН» и из каждого раздела в «ШАБЛОН» я хочу получить числа (например, 2548,1,2), которые находятся в начале каждого раздела и значение для "DELAY_TIME" (которое в настоящее время составляет 0,20,20) в Python.

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать Regex:

Ex:

import re
with open(filename, "r") as infile:
    data = infile.read()

template = re.search("^TEMPLATE[^.]*", data, re.M).group()
print(re.findall("\s+(\d+)\s+", template, re.M))
print(re.findall("\s+(\d+)\;", template, re.M))

Выход:

['2548', '1', '2']
['0', '20', '20']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...