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