вы можете бросить свой собственный мини-язык, то есть автоматизировать извлечение.Я сделал следующее, чтобы автоматизировать разбор вывода проприетарной программы
# will match in the order written here
tokens = ["num_ref_frames", "Max QP", "Min QP", "Avg QP", "I4x4",
"I16x16", "SkipZero", "SkipMV", "16x16", "16x8", "8x16",
"8x8", "8x4", "4x8", "4x4"]
special = ["Quarterpel MVs"]
# this dictionary (hash-table) contains the search string from tokens array
# as well as an array where the first element is the field to extract to
# create matrix array. e.g. 0 = 1st field, 1 = 2nd field, 3 = 3rd field etc.
dict = {tokens[0]: [1], tokens[1]: [1], tokens[2]: [1], tokens[3]: [1],
tokens[4]: [2], tokens[5]: [2], tokens[6]: [2], tokens[7]: [2],
tokens[8]: [2], tokens[9]: [2], tokens[10]: [2], tokens[11]: [2],
tokens[12]: [2], tokens[13]: [2], tokens[14]: [2],}
Затем я просто зациклился на вводе и для каждой строки проверил содержимое token
;если совпадение найдено, я делил разбиение в соответствии с записью dict, чтобы извлечь правильное поле.
special
выше должен был обрабатывать, а также специальную переменную, которая требовала чтения из нескольких строк.
Обновление
клон git://gist.github.com/1037403.git
для получения копии кода
usage:
./parser.py all_dec.txt
Надеюсь, это поможет!