【发布时间】:2016-02-10 14:59:36
【问题描述】:
我有一个包含表格的 word 文件。目标是扫描 XML(使用lxml)并生成{formTag:formValue} 的字典。它变得有点复杂,因为表单可以嵌套在最初产生的其他重复表单中
{topLevelFormTag:formTag1+formValue1+formTag2+formValue2, formTag1:formValue1, formTag2:formValue2}
然而,我们的目标是结束
{topLevelFormTag:{formTag1:formValue1, formTag2:formValue2}}
当我搜索文件 (for field in xmlroot.iter(TAG_FIELD):) 时,我填写了两个字典; parents 和 descendants 与 parents[field] = field.getparents() 和 descendants[field] = list(field.iterdescendants())。下面是我将所有字段的字典折叠到嵌套字典中的方法。如果只有一层嵌套,它可以正常工作,但是,它会因其他层而失败。它失败是因为嵌套表单位于上述所有级别的后代中,因此它可以作为任何上一级的子级放置。
for ptag in parents:
for dtag in descendants:
if parents[ptag] in descendants[dtag]:
print "{} is a descendant of {}".format(ptag, dtag)
try:
fields[dtag][ptag] = fields[ptag]
del fields[ptag]
except TypeError:
fields[dtag] = {ptag: fields[ptag]}
del fields[ptag]
except KeyError:
print "!!!{}:{}!!!".format(ptag, dtag)
如何确定要放置字段的最底层以使我的字典正确嵌套?
【问题讨论】: