我正在使用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方法,它也会显示相同的错误。
答案 0 :(得分:3)
您捕获的例外情况是TypeError
而不是ValueError
。如果要捕获异常,请将ValueError
替换为TypeError
或将其留空(此后您将捕获所有异常)。请注意,您不应该尝试在ns
块中使用url
或except
,因为它们未定义。
要做的另一个解决方案是:
if elem is not None:
ns, url = elem
nsmap[ns] = url
答案 1 :(得分:1)
添加None
if elem is None:
continue
或者在块
中执行elem
处理None
的任何操作