【发布时间】:2016-02-07 19:33:16
【问题描述】:
有人可以推荐下面描述的FinalResults 的最佳数据结构:
我正在从 XML 文档中提取各种信息。大致来说,这就是我所做的:首先使用 find_all 定位包含关键字的text 元素。然后对于每个结果:
- 获取
text元素的父标签 - 获取该父级的属性,然后
- 使用正则表达式搜索
text元素的内容以获取其他文本。
最后一次搜索产生的结果最多包含 6 个匹配组。
整个操作最终可能会返回如下内容:
FinalResult 1: [parent, parent-attr, match.group(1), match.group(2) ... ,match.group(6)]
FinalResult 2: [parent, parent-attr, match.group(1), match.group(2) ... ,match.group(6)]
我可以得到的FinalResults 没有最大数量。但平均而言,我预计每个 XML 文档的数量少于 10 个。我计划将每个FinalResult 用于其他处理,但不会在FinalResults 中更改或添加任何内容。比如我可能会说:回到<parent>属性为XYZ并获取其他数据,然后从其他地方获取一个名为match.group(2)的文件。
我可能只会访问每个 FinalResult 几次。如果重要的话,一些 match.groups 可能是“无”
这是一个例子。假设这是 FinalResult[0]:['paragraph', '39871234', '42', '103', 'b', '1', None, None]
段落将是包含我找到的关键字的标签的父标签。 39871234 将是段落标签的 id 属性 42 表示卷号 103 是该卷中的一个部分 b 和 1 是该部分的细分
我会使用 42/103/b/1 从另一个 xml 文件中提取信息。
如果我需要将一个关键字搜索结果与另一个关键字搜索结果区分开来,则将使用段落和 id,因为该文件将包含多个文本元素。 (例如Paragraph id=39871234text[string containing keyword])
我的问题是我应该将所有 FinalResults 存储为字典、列表、元组还是其他形式?
【问题讨论】:
-
XML 自然是一棵树。而python有
ElementTreeclass -
请进一步说明您要存储在数据结构中的信息的语义。
-
板球,你的第一条评论没有解决这个问题。关于你的第二个,我没有在 XML 上使用正则表达式。我在从节点提取的文本上使用它。无论如何,您的两个 cmet 都不是投反对票的正当理由。
-
Genti,我是否正确,您要求提供我将存储的信息样本?如果是这样,我已经在问题中添加了一个。
标签: python xml data-structures