TypeError:' NoneType' object不能使用python迭代

时间:2018-05-01 06:31:56

标签: python

我正在使用python处理210mb大小的xml文件。数据包含Nonetype,它会给出错误" TypeError:' NoneType'对象不可迭代"

import xml.etree.ElementTree as etree
nsmap = {}
lis = []
for event, elem in etree.iterparse("data_1.xml", events=('start-ns', 'end-ns'), remove_blank_text=True):
    try:
        print event, elem
        ns, url = elem
    #filter(None, lis)
    except ValueError:
        nsmap[ns] = url
print nsmap


TypeError                                 Traceback (most recent call last)
<ipython-input-23-23b2c0b682e8> in <module>()
      4     try:
      5         print event, elem
----> 6         ns, url = elem
      7     #filter(None, lis)
      8     except ValueError:

TypeError: 'NoneType' object is not iterable

不要如何解决它。我只是想打印数据。即使不使用try和except方法,它也会显示相同的错误。

2 个答案:

答案 0 :(得分:3)

您捕获的例外情况是TypeError而不是ValueError。如果要捕获异常,请将ValueError替换为TypeError或将其留空(此后您将捕获所有异常)。请注意,您不应该尝试在ns块中使用urlexcept,因为它们未定义。

要做的另一个解决方案是:

if elem is not None:
    ns, url = elem
    nsmap[ns] = url

答案 1 :(得分:1)

添加None

的支票
if elem is None:
    continue

或者在块

中执行elem处理None的任何操作