Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Output CSV Python Saya Mempunyai Pulangan Pengangkutan Tambahan pada Windows?

Mengapa Output CSV Python Saya Mempunyai Pulangan Pengangkutan Tambahan pada Windows?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 19:30:13485semak imbas

Why Does My Python CSV Output Have Extra Carriage Returns on Windows?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn