python去除csv文件中每一行的多余字符

动机

最近处理csv文件的时候,遇到了某些行的行尾出现多余的分号的情况,而我在使用这些csv文件的时候,这些分号会导致程序运行错误,所以就需要将这些多余的分号去除,csv的形式如下:

image_path annotation
path/to/image1 2 x1 y1 x2 y2;1 x1 y1 x2 y2
path/to/image2 1 x1 y1 x2 y2;
path/to/image3 2 x1 y1 x2 y2

解决方案

这种情况可以使用python进行解决,具体步骤如下:

  1. 假设需要处理的csv文件为train.csv,首先需要使用python对其进行读取
file = open("train.csv", "r")  # 只读模式读取train.csv文件
lines = []  # lines列表存储每一行的内容
for i in file:
    lines.append(i)  # 遍历每一行内容进行存储
file.close()  # 读取完毕
  1. 然后使用for循环对每一行内容进行处理,若行尾有分号,则去除
new = []  # 用于存储处理后的每一行内容
for line in lines:
	if line[:-1].endswith(";"):  # 若该行以分号结尾
		tmp = line[:-1].rstrip(";")  # 去除该分号
		new.append(tmp + "\n")  # 结尾加上换行符并存储
	else:
	    new.append(line)  # 若不以分号结尾,则直接存储
  1. 假设要生成的新的csv文件为train_new.csv,则将new中的内容写入即可
file_write_object = open("train_new.csv", "w")  # 写入模式
for var in new:
    file_write_object.writelines(var)
file_write_object.close()

结果

image_path annotation
path/to/image1 2 x1 y1 x2 y2;1 x1 y1 x2 y2
path/to/image2 1 x1 y1 x2 y2
path/to/image3 2 x1 y1 x2 y2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章