2016-07-26 48 views
1

我想list of list转换为使用我的日志文件中的脚本robot framework keywords.Output名单是这样的:如何转换列表清单,列出使用机器人框架关键词

@{ListA} = [ [a, b] | [c, d, e] | f | g] 

我想这个变平列表为

[ a , b , c , d , e , f , g] 

如何转换?

任何建议将有所帮助。谢谢。

+0

在你的问题的代码没有创建一个列表。更准确地说,你用一个元素创建一个列表,这个列表看起来像'“[(a,b),...]”'。你有一个真正的列表清单,或者你是否真的想把这个字符串转换成一个列表清单,然后将其平坦化? –

+0

@BryanOakley,我的意思是说我的脚本输出结果如下:\t @ {ListA} = [[a,b] | [c,d,e] | f | g] 我想将此列表展平为[a | b | c | d | e | f | g] – Rakesh

+0

这更不精确的答案。管道是不是有效的Python语法_or_机器人语法。 –

回答

3

列表解析非常强大,可以与Evaluate关键字一起使用。在这里你可以强制每个项目成为一个列表,通过检查它是否已经是 - “(sublist if isinstance(sublist,list)else [sublist])”part。一旦你有了一个列表清单,你可以用列表理解的嵌套能力将其扁平化。

有些人在使用Python进行类型检查时感到不满,但其中一个问题是字符串和列表可能会被误认为是错误的。这里使用直接的类型检查。还有其他的方法来检查一个对象是否是一个列表,你可以根据需要进行修改。

List of lists and Other Items 
    @{InnerA} Create List a b 
    @{InnerB} Create List c d e 
    @{ListA} Create List ${InnerA} ${InnerB} f g 
    ${flat} Evaluate [item for sublist in $ListA for item in (sublist if isinstance(sublist, list) else [sublist])] 
    Log List ${flat} 

_

INFO : @{InnerA} = [ a | b ] 
INFO : @{InnerB} = [ c | d | e ] 
INFO : @{ListA} = [ [u'a', u'b'] | [u'c', u'd', u'e'] | f | g ] 
INFO : ${flat} = [u'a', u'b', u'c', u'd', u'e', u'f', u'g'] 
INFO : 
List length is 7 and it contains following items: 
0: a 
1: b 
2: c 
3: d 
4: e 
5: f 
6: g 
相关问题