【问题标题】:How to slice a list of strings with space delimiter? [duplicate]如何使用空格分隔符对字符串列表进行切片? [复制]
【发布时间】:2017-03-24 22:19:03
【问题描述】:

我有一个列表 (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:

提取列表

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

【问题讨论】:

  • 如果您需要处理包含空格的文件名,这很难正确执行。但是,通常不鼓励解析 ls 的输出。你不能改用listdirscandir 吗?

标签: python string list delimiter


【解决方案1】:

就是这样:

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

请在提问时包括您以后的尝试。

如您所见,没有传递给split 的参数,这意味着它采用默认值,即空格。然后,新创建的子列表被 sliced 并只取最后一项(这就是 [-1] 的用途)。尝试将其移除以查看它会产生什么。

当然,在大多数情况下(如果不总是),在编程中,有很多方法可以完成任务。另一个例子是这样的:

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

使用第二个,您正在寻找包含点 '.' 的子字符串。您也可以将其替换为 '.txt'。这是查找特定扩展名的文件名或文件名的一种更可靠的方法,因为它们必须至少包含一个点。

这两种方法的共同点是它们都是列表推导。这是python中的一个核心概念,如果你认真的话,我建议你看看它。

希望这会有所帮助!

【讨论】:

  • 他以 11 秒的优势击败了你 @tomasn4a =(
【解决方案2】:

您可以尝试列表理解:

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2014-07-08
    • 2021-12-02
    • 2021-03-18
    • 2021-03-12
    • 2021-03-30
    • 1970-01-01
    • 2018-06-15
    相关资源
    最近更新 更多