2016-11-10 3 views
3

Ich habe eine Liste (original_List), die aus mehreren Strings mit Leerzeichen in jedem Element wie folgt besteht. Wie erstelle ich eine separate Liste der letzten Zeichenfolge (oder nur des Dateinamens ohne alle anderen) für jedes Element aus der ursprünglichen Liste?Wie schneidet man eine Liste von Strings mit Leerzeichenbegrenzer?

Original_List = ['-rw-rw-r-- 1 root root 134801 Nov 2 14:27 aa_base-13.txt', 
'-rw-rw-r-- 1 root root 58630 Nov 2 14:27 aaa_base-extras.txt', 
'-rw-rw-r-- 1 root root 300664 Nov 2 14:27 aaa_base-extras.txt'] 
Expected output for th new list should be as below: 

Extracted_list

['aa_base-13.txt', 'aaa_base-extras.txt', 'aaa_base-extras.txt'] 
+0

Das ist schwierig zu tun, wenn Sie Dateinamen verarbeiten müssen, die Leerzeichen enthalten. Es wird jedoch im Allgemeinen davon abgeraten, die Ausgabe von "ls" zu parsen. Kannst du nicht ['listdir'] (https://docs.python.org/3/library/os.html#os.listdir) oder [' scandir'] verwenden (https://docs.python.org/ 3/library/os.html # os.scandir) statt? –

Antwort

4

Das ist, wie:

new_list = [x.split()[-1] for x in Original_List] 

Bitte Ihre Versuche, in die Zukunft sind, wenn Fragen zu stellen.

Es gibt kein Argument, das an split übergeben wird, wie Sie sehen können, und das bedeutet, dass es den Standardwert verwendet, der das Leerzeichen ist. Dann sind die neu erstellten Unterlisten geschnitten und nur das letzte Element ist genommen (das ist, was die [-1] ist für). Versuchen Sie, es zu entfernen, um zu sehen, was es produziert.

Natürlich gibt es, wie meistens in der Programmierung (wenn nicht immer), viele Möglichkeiten, eine Aufgabe zu erledigen. Ein weiteres zum Beispiel wäre dies:

new_list = [y for item in [x.split() for x in Original_List] for y in item if '.' in y] 

Mit diesem zweiten Sie für Teil suchen, enthalten Punkte '.'. Sie könnten das auch durch '.txt' ersetzen. Das ist eine solide Methode, nach Dateinamen oder Dateinamen einer bestimmten Erweiterung zu suchen, da sie mindestens einen Punkt enthalten müssen.

Was die beiden Ansätze gemeinsam haben ist, dass sie Listenergänzungen sind. Dies ist ein Kernkonzept in Python und ich würde vorschlagen, es zu betrachten, wenn Sie es ernst meinen.

Hoffe, das hilft!

+0

er schlug ya @ tomasn4a um 11 Sekunden = ( –

2

können Sie versuchen Liste Verständnis:

[x.split()[-1] for x in Original_List]

hoffe, das hilft!

Verwandte Themen