G M*_*G M 6 elementtree typeerror python-3.x
当我尝试将属性设置为 None 时,我在 ElementTree 模块的文档中找不到避免出现“TypeError:无法序列化 None (type NoneType)”的实用解决方案。像这儿:
import xml.etree.ElementTree as ET
myvar = None
p = ET.Element('test')
b = ET.SubElement(p, 'tt')
b.set("last_update",myvar)
tree = ET.ElementTree(p)
tree.write('test.xml')
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用一系列,if myvar is not None: ...
但我必须多次重复 if 语句。我想知道如果属性的值为 None ,是否有办法完全避免写入该属性。
None
我通过子例程解决了这个问题,从树中删除所有属性。只需在任何序列化之前调用此函数即可。
def removeNoneAttrib(elem):
"""Remove None attributes from XML tree"""
elem.attrib = {
k: elem.attrib[k]
for k in elem.attrib
if elem.attrib[k] is not None
}
for subelem in elem:
removeNoneAttrib(subelem)
Run Code Online (Sandbox Code Playgroud)
例子:
# ... the same as your code until the last line
removeNoneAttrib(tree.getroot())
tree.write('test.xml')
Run Code Online (Sandbox Code Playgroud)
注意:如果您对表格进行了任何检查,elem.attrib[x] is None
请将其替换为x not in elem.attrib
。
归档时间: |
|
查看次数: |
2580 次 |
最近记录: |