Я в принципе есть файл с этой структурой:Python простых скобки парсер
root \
{
field1 {
subfield_a {
"value1"
}
subfield_b {
"value2"
}
subfield_c {
"value1"
"value2"
"value3"
}
subfield_d {
}
}
field2 {
subfield_a {
"value1"
}
subfield_b {
"value1"
}
subfield_c {
"value1"
"value2"
"value3"
"value4"
"value5"
}
subfield_d {
}
}
}
Я хочу разобрать этот файл с питоном, чтобы получить многомерный массив, содержащий все значения определенного подпола (для примеров subfield_c) , Например. :
tmp = magic_parse_function("subfield_c",file)
print tmp[0] # [ "value1", "value2", "value3"]
print tmp[1] # [ "value1", "value2", "value3", "value4", "value5"]
Я довольно уверен, что я использовать класс Pyparsing, но я не с чего начать, чтобы установить регулярное выражение (?). Может ли кто-нибудь дать мне несколько указателей?
Если ваш ввод такой же простой, как и вы, который вы отправили, вам даже не нужен pyparsing, и вы можете попытаться написать свой собственный токенизатор, который управляет стеком, чтобы узнать его глубину. [Здесь] (http://stackoverflow.com/a/4285211/1011859) someones делает это с круглыми скобками и без содержимого. Считаете ли вы, что можете попытаться адаптировать это? Если нет, я могу попытаться дать еще несколько указателей. (BTW: регулярные выражения не могут рассчитывать, поэтому будьте осторожны при попытке использовать их для такого рода задач) – pistache
Как именно вы изменяете строки в Python, мне любопытно? :) – pistache
В основном я удалил \ n, заменил фигурные скобки обычными скобками, и я удалил «\ t». Затем я пытаюсь выяснить, как я могу извлечь только то, что мне нужно, но это не имеет большого значения. Трудная часть состояла в том, чтобы иметь массив с правильной информацией. – haster8558