我正在尝试解析一些 XML,寻找标签名称为“ip”的元素最终我需要一个包含 IP 地址的字符串列表。这是我尝试过的:
def parseHosts(xmldoc):
hostsNode = xmldoc.firstChild
xmlList = hostsNode.getElementsByTagName("ip")
ipList = []
for ip in xmlList:
ipList.append(ip.childNodes[0].nodeValue)
print ipList
>>>[u'172.16.60.92', u'172.16.60.89', u'\n ', u'172.16.60.90', u'172.16.60.91', u'172.16.60.93']
没关系。但我需要一个 IP 地址字符串列表...我不希望节点为空。只是一个很好的地址列表,如下所示:
['172.16.60.1', '172.16.60.5', 172.16.60.100']
我尝试了一些带有列表理解的正则表达式
regex = re.compile(r'172\.16\.[0-9]*\.[0-9]*')
[m.group(0) for l in ipList for m in [regex.search(1)] if m]
但我收到以下错误
File "myParser.py", line 47, in parseHosts
[m.group(0) for l in ipList for m in [regex.search(1)] if m]
TypeError: expected string or buffer
并尝试我可能无法找到 ipList 正在使用的类型,type(ipList)
也无法弄清楚如何使这些东西成为字符串。
另外......摆脱那些Unicode的东西会很好。
很明显,我已经走到了某个地方的深处,但我不知道该去哪里找。