如何将含图片名与真值的labels.json转换为指定格式的labels.csv?
将labels.json转换为指定格式labels.csv的实现方法
需求说明
输入文件(labels.json)示例
{"자랑스럽다_2730052.jpg": "자랑스럽다", "만족스럽다_1299150.jpg": "만족스럽다"}
目标文件(labels.csv)格式要求
filename words 2730052.jpg 자랑스럽다 1299150.jpg 만족스럽다
Python脚本实现
这是最通用的实现方式,无需额外命令行工具依赖:
import json import csv # 读取JSON标签文件 with open('labels.json', 'r', encoding='utf-8') as json_file: label_dict = json.load(json_file) # 生成目标CSV文件 with open('labels.csv', 'w', encoding='utf-8', newline='') as csv_file: # 使用制表符分隔列,匹配示例格式 csv_writer = csv.writer(csv_file, delimiter='\t') # 写入表头 csv_writer.writerow(['filename', 'words']) # 遍历处理每个标签条目 for full_img_name, word in label_dict.items(): # 提取下划线后的文件名部分(如"자랑스럽다_2730052.jpg" → "2730052.jpg") cleaned_filename = full_img_name.split('_')[-1] csv_writer.writerow([cleaned_filename, word])
使用步骤
- 将上述代码保存为
convert_labels.py,和labels.json放在同一目录 - 运行脚本:
python convert_labels.py - 目录下会生成符合要求的
labels.csv
命令行(jq工具)实现
如果你的系统已安装jq(一款JSON处理命令行工具),可以用一行命令完成转换:
# 先写入表头,再追加处理后的内容 echo -e "filename\twords" > labels.csv && jq -r 'to_entries[] | "\(.key | split("_")[-1])\t\(.value)"' labels.json >> labels.csv
说明
echo -e用于输出带制表符的表头jq命令将JSON对象转换为键值对条目,提取每个文件名的下划线后部分,和对应文本用制表符拼接后追加到CSV文件
内容的提问来源于stack exchange,提问作者Khawar Islam
相关产品推荐
相关产品推荐

