Python XML解析-相当于;grep-v";在狂欢节上

Python XML解析-相当于;grep-v";在狂欢节上,python,xml,linux,minidom,Python,Xml,Linux,Minidom,这是我第一次尝试Python。我通常会坚持使用bash,但是Minidom似乎完全符合我对XML解析的需求,所以我尝试一下 我似乎无法理解的第一个问题是,“grep-v”在解析文件时的等价物是什么 我拉的每个对象都以一个特定的标记开始。如果在所述标记中,我想根据嵌入在标记中的某个字符串排除一行数据,我该如何实现这一点 我现在得到的伪代码(不排除): 我希望看到数据输出所有“name”字段,但包含“cluster”的字符串除外。由于我将在网络对象上进行多次搜索,我相信我需要在该级别进行搜索,但不知

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

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

我拉的每个对象都以一个特定的标记开始。如果在所述标记中,我想根据嵌入在标记中的某个字符串排除一行数据,我该如何实现这一点

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

我希望看到数据输出所有“name”字段,但包含“cluster”的字符串除外。由于我将在网络对象上进行多次搜索,我相信我需要在该级别进行搜索,但不知道如何进行搜索

Etree给了我一大堆问题,你能给我一些逻辑来使用minidom吗

这显然不起作用:

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

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

您通常只需循环匹配项,并跳过要排除的匹配项:

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

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

您通常只需循环匹配项,并跳过要排除的匹配项:

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

你真的,真的想用这个来代替。嗯,看起来好多了。我走之前要换一下。格雷普-v怎么样?:)你应该重新命名这个问题,我还以为你在试图用正则表达式解析XML(一个巨大的红旗)!!!对不起,已经换了。你真的真的想用这个来代替。嗯,看起来好多了。我走之前要换一下。格雷普-v怎么样?:)你应该重新命名这个问题,我还以为你在试图用正则表达式解析XML(一个巨大的红旗)!!!对不起,已经换了