Хорошо, хорошие люди stackOverflow, мой вопрос находится на широком предмете разбора. Информация, которую я хочу получить, находится на нескольких позициях в текстовом файле, отмеченном начальными и конечными заголовками (специальные строки) для каждого вида. Я хочу получить все, что находится между этими заголовками. Код, который я реализовал до сих пор, кажется каким-то ужасно неэффективным (хотя и не медленным), и, как вы можете видеть ниже, использует два заявления while.Скорее специальный синтаксический анализ файла txt
with open(sessionFile, 'r') as inp_ses:
curr_line = inp_ses.readline()
while 'ga_group_create' not in curr_line:
curr_line = inp_ses.readline()
set_name = curr_line.split("\"")[1]
recording = []
curr_line = inp_ses.readline()
# now looking for the next instance
while 'ga_group_create' not in curr_line:
recording.append(curr_line)
curr_line = inp_ses.readline()
Не обращайте внимание на то, что начальные и конечные заголовки и та же строка (просто называть их «начать» и «конец»). Приведенный выше код дает мне текст между заголовками только в первый раз, когда они появляются. Я могу изменить его, чтобы дать мне все остальное, отслеживая переменные, которые увеличиваются в каждом экземпляре, изменяя мои заявления и т. Д., Но все это похоже на попытку заново изобрести колесо и очень плохо.
Есть ли что-нибудь, что я могу использовать?
Регулярное выражение в глобальном масштабе (захват) между вашими разделителями? –
Я никогда не использовал регулярное выражение, но время для этого действительно могло случиться. Вероятно, это или все или все-разные языки, созданные для синтаксического анализа, например awk. –
Ваш код работает, но вы хотите его улучшить? Может быть лучше разместить его на codereview.stackexchange.com – AlG