使用Python基于另一个List中的值组合List中的项目

时间:2017-06-18 15:29:27

标签: python python-3.x

我正在学习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理解来完成,但不知道如何。

1 个答案:

答案 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')
]