1 回答

TA貢獻1757條經驗 獲得超7個贊
這段代碼可以滿足您的需求:
with open('raw_data.csv', 'r', newline='') as inp, open('csv_data.csv', 'w') as out:
reader = csv.reader(inp, delimiter=',', quotechar='"')
writer = csv.writer(out, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
fixed = [cell.replace('\n', '') for cell in row]
writer.writerow(fixed)
引用所有單元格是通過傳遞csv.QUOTE_ALL作為作者的“引用”參數來處理的。
線路
fixed = [cell.replace('\n', '') for cell in row]
創建一個新的單元格列表,其中嵌入的'\n'字符被空字符串替換。
默認情況下,Python 會將行尾設置為平臺的默認值。如果您想覆蓋它,您可以將行終止符參數傳遞給編寫器。
對我來說,原始的 csv 看起來很好:在引用的單元格內嵌入換行符(“軟換行符”)是正常的,并且 csv 感知應用程序應該像電子表格一樣正確處理它們。然而,它們在不理解 csv 格式的應用程序中看起來會是錯誤的,因此將嵌入的換行符視為實際的行尾字符。
添加回答
舉報