【问题标题】:Programatically identify a subset of a string以编程方式识别字符串的子集
【发布时间】:2022-10-15 01:58:51
【问题描述】:

我在一个文件夹中有一些具有类似命名约定的图像。

例子:

  • “Large_Blue_Ocean_Split_0_1.png”
  • “Large_Blue_Ocean_Split_0_2.png”
  • “Large_Blue_Ocean_Split_0_3.png”
  • “Large_Blue_Ocean_Split_1_1.png”
  • “Great_White_Shark_Split_0_1.png”
  • “Great_White_Shark_Split_0_2.png”
  • “Great_White_Shark_Split_0_3.png”

我遍历文件夹以获取图像,并尝试对字符串(即图像名称)进行子集化,这样我将拥有:

  • “Split_0_1.png”
  • “Split_0_2.png”
  • “Split_0_3.png”
  • “Split_1_1.png” 如果图像是“Large_Blue_Ocean”,然后将其全部放入列表中。

我尝试手动执行此操作,例如“Large_Blue_Ocean_Split_0_1.png”[:-13] 并且它有效,尽管我仍然认为不使用“幻数”(即 13)对我来说这样做是一个好习惯。我在下面包含了我的代码:

from pathlib import Path

directory_in_str = "images/"
image_name = "Large_Blue_Ocean"
image_list = []
pathlist = Path(directory_in_str).glob(f'{image_name}*')
for path in pathlist:
    path_in_str = str(path)
    print(path_in_str)
    image_list.append(path_in_str[:-13])

非常感谢任何帮助谢谢!

此外,图像名称的词干(即我感兴趣的部分)总是有“Split...”或“split...”。如果这有帮助。

【问题讨论】:

    标签: python python-3.x regex path


    【解决方案1】:

    尝试:

    image_list = [re.findall("(?:split|Split).*", str(path))[0] for path in  path_list]
    

    输出:

    ['Split_0_1.png',
     'Split_0_2.png',
     'Split_0_3.png',
     'Split_1_1.png',
     'Split_0_1.png',
     'Split_0_2.png',
     'Split_0_3.png']
    

    【讨论】:

    • 不幸的是,不起作用,但我想我明白你在做什么。
    • 我当时并没有完全理解你的问题。我添加了输出,这不是你想要的吗?
    猜你喜欢
    • 2023-03-09
    • 2018-08-14
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多