2016-07-26 12 views
1

I list of list auf LIST robot framework keywords.Output von meinem Skript in Logfile wie dies umzusetzen versuchen:Wie LIST Mit Roboter-Framework Keywords Liste der Liste konvertiert

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

ich dies glätten wollte Liste als

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

Wie konvertiert man das?

Alle Vorschläge wären hilfreich. Vielen Dank.

+0

Im Code in Ihrer Frage, die Sie schaffen keine Liste. Genauer gesagt, Sie erstellen eine Liste mit einem Element, einem String, der aussieht wie "[(a, b), ...]" '. Haben Sie eine tatsächliche Liste von Listen, oder möchten Sie diese Zeichenfolge buchstäblich in eine Liste von Listen umwandeln und dann abflachen? –

+0

@BryanOakley, wollte ich sagen, dass die Ausgabe meines Skripts wie folgt war: \t @ {ListA} = [[a, b] | [c, d, e] | f | g] Ich wollte diese Liste als [a | b | c | d | e | f | g] – Rakesh

+0

Das ist noch weniger genau eine Antwort. Die Pipes sind keine gültige Python-Syntax oder Robotersyntax. –

Antwort

3

Listenübersichten sind ziemlich leistungsfähig und können mit dem Schlüsselwort Evaluate verwendet werden. Hier können Sie jedes Element zu einer Liste zwingen, indem Sie prüfen, ob es bereits vorhanden ist - die "(Unterliste, falls Instanz (Unterliste, Liste), sonst [Unterliste])". Sobald Sie eine Liste mit Listen haben, können Sie diese mit der Verschachtelungsfähigkeit eines Listenverständnisses reduzieren.

Einige Leute missbilligen die Typ-Überprüfung in Python, aber einer der Schwierigkeiten ist, dass Strings und Listen falsch sein können. Hier wird eine direkte Typprüfung verwendet. Es gibt andere Ansätze, um zu überprüfen, ob ein Objekt eine Liste ist, und Sie können diese nach Bedarf ändern.

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 
Verwandte Themen