2016-10-07 3 views
2

Gibt es eine Pythonic-Methode, um alle Strings in einer Liste zu trennen?Alle Strings in einer Liste aufteilen?

Angenommen, ich habe eine Liste von Strings:

list = ['foo', 'bar', 'baz'] 

Und ich will nur die letzten zwei Zeichen von jeder Saite:

list2 = ['oo', 'ar', 'az'] 

Wie kann ich das?

Ich weiß, ich kann durch die Liste iterieren und nehmen list[i][-2:] von jedem einzelnen, aber das scheint nicht sehr Pythonic.

Weniger allgemein, mein Code:

def parseIt(filename): 
    with open(filename) as f: 
     lines = f.readlines() 

    result = [i.split(',') for i in lines[]] 

... außer ich nur lines[i][20:] aus jeder Zeile geteilt werden soll (nicht die ganze Zeile).

+3

Was ist los mit '[Wort [1:] für Wort in lst]'? Das ist ziemlich einfach. Außerdem behandelt Ihr Code eine Datei, in der jede Zeile durch Kommas getrennt ist. – idjaw

+0

@idjaw: Ja, das ist es; Vielen Dank. Genauer gesagt, das beantwortet den ersten Teil meiner Frage und sagt mir, wie ich den zweiten Teil lösen soll, was ich denke, ist 'result = [i [20:]. Split (', ') für i in Zeilen] '. Mach es eine Antwort und ich werde es aufwerten. –

+0

Aber welche endgültige Ausgabe suchen Sie? '[i [20:]. split (',') für i in Zeilen]' scheint ein bisschen seltsam. Wie sieht jede Zeile aus "Zeilen" aus? Und was genau suchen Sie als Endergebnis? – idjaw

Antwort

5

Sie haben erwähnt, dass Sie list[i][-2:] zur Transformation der Liste pro Ihre Spezifikation tun kann, aber was Sie eigentlich auf der Suche nach ist:

[word[1:] for word in lst] 

Weiterhin für die Codebeispiel Sie, wo Sie zu suchen scheinen Scheibe 20 Zeichen von Anfang an, die Lösung ist die gleiche:

result = [i[20:].split(',') for i in lines] 
Verwandte Themen