文件名上的拆分索引在 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('/')
。
我的文件夹和文件的结构如下所示
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('/')
。