動機
最近處理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進行解決,具體步驟如下:
- 假設需要處理的csv文件爲train.csv,首先需要使用python對其進行讀取
file = open("train.csv", "r") # 只讀模式讀取train.csv文件
lines = [] # lines列表存儲每一行的內容
for i in file:
lines.append(i) # 遍歷每一行內容進行存儲
file.close() # 讀取完畢
- 然後使用for循環對每一行內容進行處理,若行尾有分號,則去除
new = [] # 用於存儲處理後的每一行內容
for line in lines:
if line[:-1].endswith(";"): # 若該行以分號結尾
tmp = line[:-1].rstrip(";") # 去除該分號
new.append(tmp + "\n") # 結尾加上換行符並存儲
else:
new.append(line) # 若不以分號結尾,則直接存儲
- 假設要生成的新的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 |
… | … |