jyb000 发表于 2021-3-4 17:16:26

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输出不报错?(不修改原始数据)
请前辈高手帮解决下。谢谢了!

qiuyouzhi 发表于 2021-3-4 17:37:02

try-except

jyb000 发表于 2021-3-4 17:52:23

qiuyouzhi 发表于 2021-3-4 17:37
try-except

这个不行……会跳过

jyb000 发表于 2021-3-4 20:42:29

{:5_104:}来个大佬指点下~~

Daniel_Zhang 发表于 2021-3-4 22:07:07

很费解啊,楼上已经告诉你了 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:27:44

本帖最后由 jyb000 于 2021-3-5 07:30 编辑

Daniel_Zhang 发表于 2021-3-4 22:07
很费解啊,楼上已经告诉你了 try-except 了

什么叫会跳过


这个会跳过丢了一组数据。 如:测试  和空值这组数据得不到了~~我想不漏掉数据,能把测试  和空值都得到,(空值可替换为0表示或None表示都行,就是不能漏掉数据)

qq1151985918 发表于 2021-3-5 08:05:35

本帖最后由 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)

Daniel_Zhang 发表于 2021-3-5 15:10:08

qq1151985918 发表于 2021-3-5 08:05
居然还要喂到嘴里不然就吃不了饭

xswl{:10_282:}
页: [1]
查看完整版本: python中空值的处理问题