【发布时间】:2013-01-08 22:42:32
【问题描述】:
我正在尝试解析一些 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 的东西会很好。
很明显,我已经走到了尽头,但我不知道该去哪里找。
【问题讨论】:
-
您在哪里看到要删除的“uuencode 东西”?
-
另外,你为什么不能使用
type(ipList)?你希望它有什么好处呢?您将其创建为空的list,然后在其上调用append,那么除了list,它还能是什么? -
uuencode 的东西在 ipList u'172.16.60.92'中
-
那不是 uuencoded。 uuencoded 文本看起来像
'begin 666 <data>\n,,3<R+C$V+CDP+CDR\n \nend\n'。 -
当我使用 type(ipList) 时,我什么也得不到。它没有告诉我它是字符串还是列表还是其他任何东西......我知道我创建了一个列表,但是有一个类型错误。那会在哪里?