【发布时间】:2016-12-09 00:19:18
【问题描述】:
我基本上有一个这样结构的文件:
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 {
}
}
}
我想用 python 解析这个文件以获得一个多维数组,其中包含特定子字段的所有值(例如 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,您可以尝试编写自己的标记器来管理堆栈以了解其深度。 Here某人用括号做,没有内容。你觉得你可以尝试适应这种情况吗?如果没有,我可以尝试提供更多指示。 (顺便说一句:正则表达式无法计数,因此在尝试将它们用于此类任务时要小心)
-
您究竟是如何在 Python 中修改字符串的,我很好奇? :)
-
基本上我已经删除了\n,用普通括号替换了大括号,我已经删除了“\t”。然后我试图弄清楚如何只提取我需要的东西,但这没什么大不了的。困难的部分是拥有一个包含正确信息的数组。
-
如果您找到了可行的解决方案,最好将其发布为您自己问题的答案 :)
-
是的,我正在努力,我正在尝试编写“magic_parse_function”。完成后,我将发布解决方案。问题是我只想有一个特定的深度,但函数返回所有内容。