2
我有一個帶有窗體的字文件。目標是掃描XML(使用lxml
)並生成{formTag:formValue}
字典。它得到稍微更加複雜,因爲形式可以嵌套在其它重複形式,其initally產生從Word XML嵌套字典
{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)
如何確定最下方水平放置在這樣一個領域,我的字典裏是正確的嵌套?