python - 在 csv 文件中写入混合数据行
问题描述
我想在 .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()
因此,在一个循环中(我正在生成每个数据行),我使用类似的代码来附加每个这样的行(我使用类型转换将整数转换为字符串,否则它会产生错误,例如:“。 ..iterable 预期,而不是 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']
我需要这样的输出:
如何做到这一点?
解决方案
如果您想一次只写一行,请使用writerow
而不是。writerows
推荐阅读
- android - 无法显示从存储在 SQLite 数据库中的列表中提取的数据
- android - Android - 是什么决定了我的手机可以投射到哪些设备?
- android - Google 地图 API 未在 Google Play 服务中列出?如果它不存在,我能做什么来代替它?
- mysql - 如何通过检查两列值来获得每个组的最高值
- c# - C# 中是否有像 ConcurrentQueue 这样的数据结构,它允许我等待一个空队列,直到添加一个项目?
- php - PayPal 支付沙箱给出 AUTHORIZATION_ERROR
- sql - 按日期过滤,格式为“dd/mm”
- spring-mvc - JavaFX 中的 MVC 设计模式和控制器
- arrays - 使用什么更快:Array.includes 或 swicth case(在 node.js 中)?
- mysql - 当表很大时找到每个组的最大记录时如何优化sql?