2016-11-10 27 views
3

我有一個列表(original_List),它由多個字符串組成,每個元素中都有空格,如下所示。如何爲原始列表中的每個元素創建最後一個字符串的單獨列表(或者僅包含文件名除外)?如何使用空格分隔符來切分字符串列表?

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

如果您需要處理包含空格的文件名,這很難做到正確。但是,通常不鼓勵解析'ls'的輸出。你不能使用['listdir'](https://docs.python.org/3/library/os.html#os.listdir)或['scandir'](https://docs.python.org/ 3/library/os.html#os.scandir)而不是? –

回答

4

這就是如何:

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

請提供您嘗試在未來的提問的時候。

如您所見,沒有任何參數傳遞給split,這意味着它需要默認的空間。然後,新創建的子列表分片,只是最後一個項目被採取(這就是[-1]是什麼)。嘗試刪除它看看它產生了什麼。

當然,隨着編程的大部分時間(如果不是總是),有很多方法可以完成任務。另一個例如會是這樣:

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

與你正在尋找一個包含點'.'子這第二個。你也可以用'.txt'來代替它。這是查找特定擴展名的文件名或文件名的更穩定的方式,因爲它們必須至少包含一個點。

這兩種方法有什麼共同之處在於它們是列表解析。這是python的一個核心概念,如果你認真對待這個問題,我會建議看看它。

希望這會有所幫助!

+0

他擊敗亞@@ tomasn4a 11秒=( –

2

您可以嘗試列表理解:

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

希望這有助於!

相關問題