python求助
有一abc.XML文件,如下:<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<aa>23</aa>
</login>
<maxid>5</maxid>
<login username="py" passwd='123456'>
<caption>Test</caption>
<aa>aa</aa>
</login>
<maxid>6</maxid>
<login username="pyrr" passwd='123456'>
<caption>Testtest</caption>
<aa></aa>
</login>
</catalog>
-----------------------------------------
用python提其需要的内容
------------------------------------
from xml.dom.minidom import parse
dom = parse('abc.xml')
data = dom.documentElement
stus = data.getElementsByTagName('login')
for stu in stus:
# 获取标签中内容
a = stu.getElementsByTagName('caption').childNodes.nodeValue
b = stu.getElementsByTagName('aa').childNodes.nodeValue
print(a,b)
出错,错误提示,b = stu.getElementsByTagName('aa').childNodes.nodeValue
IndexError: list index out of range。
出错原因是 最后一个<aa></aa>存在一个空值,在不改动原表的的情况下,如何将空值输出为none且不出错!!
初学,请前辈指点下!!谢谢! from xml.dom.minidom import parse
dom = parse('abc.xml')
data = dom.documentElement
stus = data.getElementsByTagName('login')
for stu in stus:
# 获取标签中内容
tmp = stu.getElementsByTagName('caption')
a = tmp.childNodes.nodeValue if tmp else None
tmp = stu.getElementsByTagName('aa')
b = tmp.childNodes.nodeValue if tmp else None
print(a,b) b值全部变为None了……。23,aa 没有读出来~{:5_91:} jyb000 发表于 2021-3-4 17:23
b值全部变为None了……。23,aa 没有读出来~
那是根本没读取到aa的值,你要从源头查问题,我改的只是判断tmp = stu.getElementsByTagName('aa')返回的是否是空列表,是空列表就将b赋值为None,不为空就将tmp.childNodes.nodeValue赋值给b。很明显for循环中的几个stu的stu.getElementsByTagName('aa')都返回了空列表。
另外你要点“回复”,要不然我看不到你的回复。
页:
[1]