0

这是我第一次涉足 Python。我通常会坚持使用 bash,但是 Minidom 似乎完全符合我对 XML 解析的需求,所以我试了一下。

我似乎无法弄清楚的第一个问题是,解析文件时“grep -v”的等价物是什么?

我要拉的每个对象都以特定标签开头。如果在所述标签中,我想根据嵌入在标签中的某个字符串排除一行数据,我该如何完成?

我现在得到的伪代码(不排除):

mainTag = xml.getElementsByTagName("network_object")
name = network_object.getElementsByTagName("Name")[0].firstChild.data

我希望看到数据输出所有“名称”字段,但包含“集群”的字符串除外。由于我将在 network_objects 上进行多次搜索,因此我相信我需要在该级别进行搜索,但不知道如何操作。

Etree 给了我很多问题,你能给我一些逻辑来用 minidom 做到这一点吗?

这显然不起作用:

name = network_object.getElementsByTagName("Name")[0].firstChild.data
if name is not 'cluster' in name
continue
4

1 回答 1

3

首先,远离 minidom 模块。如果您已经了解其他语言的 DOM 并且真的不想学习任何其他 API,那么 Minidom 非常棒。标准库中有更简单的替代方案。我会改用ElementTree API

您通常只是循环匹配匹配,并在执行此操作时跳过要排除的匹配:

from xml.etree import ElementTree

tree = ElementTree.parse(somefile)

for name in tree.findall('.//network_object//Name'):
    if name.text is not None and 'cluster' in name.text:
        continue  # skip this one
于 2013-03-20T18:53:28.983 回答