【发布时间】:2020-05-18 16:21:15
【问题描述】:
我想在 .csv 文件中写入行以及每行同时包含数值和字符串的标题。以下是标题:
这里只有“文件名”和“类”是字符串类型的。其余列是数字。标题应该只写一次,并且要逐一追加行。行与行之间不应有空白换行符。
所以我做了以下事情:
-
一开始我分别写了标题:
fields = ["filename", "width", "height", "class", "xmin", "ymin", "xmax", "ymax"] with open(csv_file_dir, 'w') as csvfile: # creating a csv writer object csvwriter = csv.writer(csvfile) # writing the fields csvwriter.writerow(fields) csvfile.close() -
因此在一个循环内(我正在生成每个数据行)我使用类似的代码来附加每一行这样(我使用类型转换将整数转换为字符串,否则它会产生错误,例如:“...预期可迭代,而不是 int”):
rows = [str(img_SN), str(w), str(h), "eye", str(relt[0]), str(relt[1]), str(rerb[0]), str(rerb[1])] # data row # writing to csv file with open(csv_file_dir, 'a') as csvfile: # creating a csv writer object csvwriter = csv.writer(csvfile, delimiter = ',') # writing the data rows csvwriter.writerows(rows) csvfile.close()
但它给出了完全不受欢迎的输出。例如,对于示例数据行,输出如下:
['0.jpg', '464', '350', '眼睛', '107', '119', '133', '145']
文件中写入的内容如下:
也就是说,每个字符都受到攻击,而且它会自动换行。
但是想要的输出是这样的:
考虑两个样本行:
['0.jpg', '464', '350', '眼睛', '107', '119', '133', '145']
['1.jpg', '768', '576', '眼睛', '131', '176', '257', '302']
我需要这样的输出:
如何做到这一点?
【问题讨论】: