Search code examples
pythoncsvpython-3.3writer

Empty space in between rows after using writer in python


I am using csv package now, and every time when I write to a new csv file and open it with excel I will find a empty row in between every two rows.

filereader = csv.reader(open("tests.csv", "r"), delimiter=",")
filewriter = csv.writer(open("test_step1.csv", "w"), delimiter=",")
#Delete header
for row in filereader:
    if row[0].isdigit():
        filewriter.writerow(row)

enter image description here


Solution

  • You need to open the file in wb mode try:

    import csv
    
    filereader = csv.reader(open("tests.csv", "r"), delimiter=",")
    filewriter = csv.writer(open("test_step1.csv", "wb"), delimiter=",", newline="")
    #Delete header
    for row in filereader:
        if row[0].isdigit():
            filewriter.writerow(row)
    

    The csv.writer writes \r\n into the file directly.

    If you don't open the file in binary mode, it will write \r\r\n because on Windows text mode will translate each \n into \r\n.

    edit:

    For python 3 had to add newline="" to csv.writer as per this answer