python parsimonious: анализ файла конфигурации с несколькими отметками комментариев

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

Например:

key1 = value
key2 = value;This is a comment
key3 = value;This is still value;This is a comment

Могу ли я сделать это с помощью экономного? Как я могу написать грамматику, которая выделяет последний раздел после знака ;?

Спасибо.


person Omer    schedule 21.12.2016    source источник


Ответы (2)


Вы можете сделать что-то вроде этого:

with open('config_file') as f:
    content = f.readlines()

for c in content:
   tmp = c.split(';') # Split line by `;`.
   comment = tmp[len(tmp) - 1]  # This is the comment part. 
   ...
person Nurjan    schedule 21.12.2016
comment
Конечно, я могу это сделать. Я спросил, могу ли я использовать экономичный анализ такого файла. - person Omer; 21.12.2016
comment
@Omer, извини. Я не так тебя поняла. Я думал, вы боретесь с синтаксическим анализом строк в файле конфигурации. Что касается скупости, думаю, можно. - person Nurjan; 21.12.2016
comment
Я действительно надеялся на недвоичный ответ :) - person Omer; 21.12.2016

Лучшее решение, которое я мог получить от скупости, - это рассматривать значения и различать их при посещении дерева:

configGrammar = Grammar(r"""
file = "\n"* line* "\n"*
line = key ws? "=" ws? valueComment (";" valueComment)* "\n"
key = ~"[0-9A-z_]+"
valueComment = ~"[^;\n]*" 
ws = " "*
""")`
person Omer    schedule 21.12.2016