【问题标题】:Python String remove everything after specific character showed up 3 timesPython字符串在特定字符出现3次后删除所有内容
【发布时间】:2021-11-26 11:41:51
【问题描述】:

我有以下问题。

我有一个完整的文件名列表,我想过滤掉其中的特定部分。问题是,我无法知道信息的确切位置,因为它可能会根据文件本身而改变。我只能确定下划线的相对位置。

一个例子会是什么样子:

'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'

我需要做什么才能获得 123?我最初的想法是删除第三个_ 和第四个_ 之前的所有内容,但我不知道如何使用.split() 完成此操作

【问题讨论】:

  • pathlib.Path(your_string).name.split('_')[-2]?

标签: python string file


【解决方案1】:

要清楚 .split() 的工作原理,请查看其输出:

>>>a = 'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'

>>>a.split('_')
['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']

现在,如果你想要的字符串部分总是在前两个'_'之后,你可以提取它:

>>>a.split('_')[2]

'123'

【讨论】:

    【解决方案2】:
    string = 'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'
    new_list = string.split("_")
    

    new_list 输出将是:

    ['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']
    

    现在我们要获取123的索引:

    target = new_list.index("123")
    

    输出将是:

    2
    

    现在我们得到了结果:

    result = new_list[target]
    

    输出将是:

    123
    

    注意:使用此方法,您可以获得任何字符串,只需将123 替换为您的单词

    当然我们可以做new_list[2] 但是如果123 路径改变呢?!

    【讨论】:

      【解决方案3】:

      你可以使用:

      parts = a.split('_') ; ['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']
      

      最后:

      result = parts[2] ; '123'
      

      您必须知道 split 返回和数组,其中元素由您指定的值 (_) 分隔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多