首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式标识字符串的子集

以编程方式标识字符串的子集
EN

Stack Overflow用户
提问于 2022-10-12 16:42:19
回答 1查看 32关注 0票数 0

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

示例:

  • "Large_Blue_Ocean_Split__1.png"
  • "Large_Blue_Ocean_Split__2.png"
  • "Large_Blue_Ocean_Split__3.png"
  • "Large_Blue_Ocean_Split_1_1.png"
  • "Great_White_Shark_Split__1.png"
  • "Great_White_Shark_Split__2.png"
  • "Great_White_Shark_Split__3.png"

我循环遍历图像的文件夹,并尝试对字符串(即图像名)进行子集,这样我就可以拥有:

  • "Split__1.png"
  • "Split__2.png"
  • "Split__3.png"
  • "Split_1_1.png“如果图像是"Large_Blue_Ocean”,然后将其全部放在列表中。

我试着手动完成这个操作,例如"Large_Blue_Ocean_Split__1.png":-13,虽然我仍然认为不使用“魔术数字”(即13)是一个很好的实践。我在下面列出了我的代码:

代码语言:javascript
复制
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])

任何帮助都是非常感谢的,谢谢!

而且,图像名称的词干(也就是我感兴趣的部分)总是有“拆分.”。或者“分裂.”如果有帮助的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 16:48:23

尝试:

代码语言:javascript
复制
image_list = [re.findall("(?:split|Split).*", str(path))[0] for path in  path_list]

输出:

代码语言:javascript
复制
['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']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74045326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档