我正在学习Python编程,我编写了一个python脚本来从XML中提取所有标记和值并将其转换为excel。我遇到的问题是我需要特定格式的标签。我在两个单独的列表中有以下标记和值。
如果某行中不存在该值,则应在之前将Tag添加到下一个值,直到我们到达具有值的标记。 所以如果输入是
Tags Values
OAuth
UserAuth
Vendor ABC
Time 21.04
AppName
Request Temporary
并且所需的输出类似于
Tags Values
OAuth
OAuth.UserAuth
OAuth.UserAuth.Vendor ABC
OAuth.UserAuth.Time 21.04
AppName
AppName.Request Temporary
由于这没有固定的可重复更改,我完全不确定如何使用Python进行操作。我知道这可以用List理解来完成,但不知道如何。
答案 0 :(得分:0)
tags = ['OAuth', 'UserAuth', 'Vendor', 'Time', 'AppName', 'Request']
values = ['', '', 'ABC', '21.04', '', 'Temporary']
def parse_tree(tags, values):
value_found = False
path = []
for tag, value in zip(tags, values):
if value:
value_found = True
yield ((".".join(path + [tag])), value)
else:
if value_found:
# new branch from root
path = []
value_found = False
path.append(tag)
list(parse_tree(tags, values))
给出
[
('OAuth.UserAuth.Vendor', 'ABC'),
('OAuth.UserAuth.Time', '21.04'),
('Request', 'Temporary')
]