一部の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のものを取り除くのは良いことです。
明らかに私はここのどこかで最深部を離れましたが、どこを見ればよいのかわかりません。