文件名上的拆分索引在 python 中给我错误的输出

Split index on filename gives me wrong output in python

我的文件夹和文件的结构如下所示

images = glob("/content/drive/MyDrive/Colab/input/final_data/)

在 final_data 里面我有几个文件说 crash_039.jpg 等。在这里我将下划线之前的部分拆分为我的 class 并将整个部分拆分为我的图像。

我希望我的输出具有 class 不带方括号的名称。下面的代码给了我方括号,我不确定是什么问题,或者这在协作中是否正常?

images = glob("/content/drive/MyDrive/Colab/input/final_data/*.jpg")
train_image = []
train_class = []
for i in tqdm(range(len(images))):
    # creating the image name
    train_image.append(images[i].split('/')[7])
    # creating the class of image
    train_class.append(images[i].split('/')[7].split('_')[:1])
    
# storing the images and their class in a dataframe
train_data = pd.DataFrame()
train_data['image'] = train_image
train_data['class'] = train_class

# converting the dataframe into csv file 
train_data.to_csv('/content/drive/MyDrive/Colab/input/train_output/train_new.csv',header=True, index=False)

输出

    image   class
0   crash_039.jpg   [crash]
1   crash_040.jpg   [crash]

预期输出

    image   class
0   crash_039.jpg   crash
1   crash_040.jpg   crash

所附图片显示了 csv 是如何存储它的,但我不想要 class 列周围的那些引号和括号。

像您一样切片 images[i].split('/')[7].split('_')[:1]) returns 您正在打印列表。

我相信你想使用索引来获取类名:images[i].split('/')[7].split('_')[0])

这解决了您的问题,但是我建议您使用 os.path.basename(filename) 而不是您正在做的混乱 split('/')