yuv*_*hav 3 python string list delimiter
我有一个列表(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:
Run Code Online (Sandbox Code Playgroud)
提取列表
['aa_base-13.txt', 'aaa_base-extras.txt', 'aaa_base-extras.txt']
Run Code Online (Sandbox Code Playgroud)
这就是如何:
new_list = [x.split()[-1] for x in Original_List]
Run Code Online (Sandbox Code Playgroud)
提问时请包括您将来的尝试。
split如您所见,没有传递给参数,这意味着它采用默认值,即空格。然后,新创建的子列表被切片,只取最后一项(这就是[-1]它的用途)。尝试删除它以查看它产生的结果。
当然,在编程中的大多数时候(如果并非总是如此),有很多方法可以完成一项任务。另一个例子是这样的:
new_list = [y for item in [x.split() for x in Original_List] for y in item if '.' in y]
Run Code Online (Sandbox Code Playgroud)
使用第二个,您正在寻找包含 dots 的子字符串'.'。你也可以用'.txt'. 这是查找特定扩展名的文件名或文件名的一种更可靠的方法,因为它们必须至少包含一个点。
这两种方法的共同点是它们都是列表推导式。这是python中的一个核心概念,如果您对此很认真,我建议您查看它。
希望这可以帮助!