python中空值的处理问题
有一XML文件,如下:<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item>ok</item>
</login>
<maxid>5</maxid>
<login username="pytest" passwd='123456'>
<caption>测试</caption>
<item></item>
</login>
<maxid>6</maxid>
<login username="pytest" passwd='123456'>
<caption>测试用</caption>
<item>okokok</item>
</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('item').childNodes.nodeValue
print(a,b)
运行后错误提示如下:
b = stu.getElementsByTagName('item').childNodes.nodeValue
IndexError: list index out of range
主要问题是因为<item></item>中无值引起报错,请问:如何将这空值默认为0输出不报错?(不修改原始数据)
请前辈高手帮解决下。谢谢了! try-except qiuyouzhi 发表于 2021-3-4 17:37
try-except
这个不行……会跳过 {:5_104:}来个大佬指点下~~ 很费解啊,楼上已经告诉你了 try-except 了
什么叫会跳过
目的不就是为了遇到空值的时候跳过这个吗?
如果实现不了你需要的效果,只能说你的 try-except 没用对
try:
a = stu.getElementsByTagName('caption').childNodes.nodeValue
b = stu.getElementsByTagName('item').childNodes.nodeValue
except IndexError:
continue 本帖最后由 jyb000 于 2021-3-5 07:30 编辑
Daniel_Zhang 发表于 2021-3-4 22:07
很费解啊,楼上已经告诉你了 try-except 了
什么叫会跳过
这个会跳过丢了一组数据。 如:测试 和空值这组数据得不到了~~我想不漏掉数据,能把测试 和空值都得到,(空值可替换为0表示或None表示都行,就是不能漏掉数据) 本帖最后由 qq1151985918 于 2021-3-5 08:08 编辑
居然还要喂到嘴里不然就吃不了饭{:9_233:}from xml.dom.minidom import parse
dom = parse('abc.xml')
data = dom.documentElement
stus = data.getElementsByTagName('login')
for stu in stus:
try:
a = stu.getElementsByTagName('caption').childNodes.nodeValue
except IndexError:
a = None
try:
b = stu.getElementsByTagName('item').childNodes.nodeValue
except IndexError:
b = None
print(a,b)
qq1151985918 发表于 2021-3-5 08:05
居然还要喂到嘴里不然就吃不了饭
xswl{:10_282:}
页:
[1]