使用递归函数创建层次结构列表

时间:2017-04-29 19:57:48

标签: python python-2.7 python-3.x rdflib

我是python的新手。我正在尝试制作一个列表,表示从某个节点开始的分层数据,从带有rdflib的图表中查询。

这是输入文件:

    @prefix ex: <http://www.w3.org/1/> .
    ex:b1 ex:rel ex:a .
    ex:b2 ex:rel ex:a .
    ex:c ex:rel ex:b1 .

以下是代码:

    from rdflib import Graph, Literal, BNode, Namespace, RDF, URIRef
    from sets import Set
    g = Graph()
    g.parse("test.ttl", format="turtle")
    ex = Namespace('http://www.w3.org/1/')
    dlist = []
    def totree(lst):
        global dlist
        if dlist == []:
           dlist.append(lst)
        for i in lst:
            for s, p, o in g.triples((None, ex.rel, URIRef(ex + i))):
                s = str(BNode(s)).replace(ex, '')
                g.remove((s, p, o))
                dlist.append([s])
                totree([s])
    if __name__ == '__main__':
        totree(['a'])
    print dlist

我得到了这个输出:

    [['a'], [u'b1'], [u'c'], [u'b2']]

如何输出分层列表,如下所示:

    [['a', [u'b1', [u'c']], [u'b2']]]

提前致谢。

0 个答案:

没有答案