问题描述
dict转为标准json格式化字符串json_str,再把这个json字符串使用csv库写入csv文件 会有多余的双引号。
伪代码如下:
import os
import re
import cv2
import glob
import csv
import json
from tqdm import tqdmwith open('test.csv', 'w', newline='') as csvfile:# 创建 CSV 写入对象csvwriter = csv.writer( csvfile, delimiter='\01')# 遍历所有图像文件for image_file in tqdm(image_files):data_dict = {}# 读取图像文件image = cv2.imread(image_file)f_name = os.path.basename(image_file)# 检查图像是否成功读取if image is None:print(f"Error: Could not read the image {image}.")else:# 获取图像的高度和宽度height, width = image.shape[:2]data_dict["test"] = "/path/" + f_namedata_dict["width"] = widthdata_dict["height"] = heightdata_dict["info"] = "开源数据"str_info = json.dumps(data_dict, ensure_ascii=False)csvwriter.writerow(["20240904", data_dict["test"], str_info, "1"])
一直想用字符串replace的方式解决,查了一会,发现问题出在csv写入时有一些默认设置,见:https://stackoverflow.com/questions/19315366/csv-writer-in-python-with-custom-quoting
只需要把上面 csvwriter 改为:
csvwriter = csv.writer( csvfile, delimiter='\01', quoting=csv.QUOTE_NONE, quotechar='')
即可解决问题!!!