如何使用空格分隔符来切分字符串列表?
问题描述:
我有一个列表(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']
答
这就是如何:
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秒=( –
答
您可以尝试列表理解:
[x.split()[-1] for x in Original_List]
希望这有助于!
如果您需要处理包含空格的文件名,这很难做到正确。但是,通常不鼓励解析'ls'的输出。你不能使用['listdir'](https://docs.python.org/3/library/os.html#os.listdir)或['scandir'](https://docs.python.org/ 3/library/os.html#os.scandir)而不是? –