Fail Output CSV Isu Pemulangan Carriage Tambahan pada Windows dalam Python
Apabila menjana fail CSV dalam Python, ada kemungkinan untuk menambah gerabak tambahan secara tidak sengaja kembali pada akhir setiap baris. Tingkah laku ini boleh diperhatikan dalam kod berikut:
import csv with open('test.csv', 'w') as outfile: writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) writer.writerow(['hi', 'dude']) writer.writerow(['hi2', 'dude2'])
Output Jangkaan:
hi,dude hi2,dude2
Output Sebenar (Windows):
hi,dude\r\r\nhi2,dude2\r\r\n
Punca dan Resolusi untuk Python 3:
Dalam Python 3, isu ini timbul kerana daripada ciri terjemahan baris baharu universal lalai. Untuk menyelesaikannya, buka fail dengan newline='' untuk melumpuhkan terjemahan ini:
with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) ...
Punca dan Penyelesaian untuk Python 2:
Pada Windows dalam Python 2 , isu ini berlaku kerana CSV dianggap sebagai format binari, dan rn ialah pemisah rekod. Jika fail dibuka dalam mod teks, Python menggantikan n dengan rn, menghasilkan pulangan dua gerabak. Penyelesaiannya adalah dengan sentiasa membuka fail dalam mod binari:
with open('test.csv', 'wb') as outfile: writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) ...
Atas ialah kandungan terperinci Mengapa Output CSV Python Saya Mempunyai Pulangan Pengangkutan Tambahan pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!