如何从路径列表中删除项目



我有一个list of lists,其中有我所有训练图像的路径,如下图所示。

from pathlib import Path
image_list = [[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_033_S_0724_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_033_S_0724_Img_Na__Ma_F_.png')],
[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_033_S_0733_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_033_S_0733_Img_Na__Ma_F_.png')],
[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_034_S_0733_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_034_S_0733_Img_Na__Ma_F_.png')]
]

现在,我想根据路径的一部分(特别是路径的最后一部分(从列表中删除一个项目。比方说,我想从列表中删除一个名称以Image_033_S_0733...开头的元素。

我试着

final_list = []
for sub_list in listA:
for sub_sub_list in sub_list:
if "Image_033_S_0733" not in sub_sub_list.name:
final_list.append(sub_sub_list)

我得到的是一个平面列表,而不是列表列表。image_list的形状为(77, 2)。预期的输出是(从列表列表中删除该项之后((76, 2),但我得到的是(228, )

是否可以从PosixPath列表中删除项目?

使用.name属性从Path对象获取文件名。

因此,将循环或列表理解中的条件替换为:

'Image_044_S' not in item.name

若要在结果上获得嵌套循环,请使用嵌套列表理解。

final_list = [
[item for item in sub_list if "Image_033_S_0733" not in item.name]
for sub_list in image_list]

相关内容

  • 没有找到相关文章

最新更新