Reputation: 169
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)
Upvotes: 11
Views: 38565
Reputation: 2137
For those that using pandas.DataFrame
, use lineterminator
to remove space between row and '.write('\n') to add space between DataFrame
.
import pandas as pd
import numpy as np
with open('report_.csv', 'w') as f:
for _ in range(4): # loop here
df = pd.DataFrame(np.random.random((3,4)))
df.to_csv(f,
index=True, # to include index
header=True, # to include header
lineterminator='\n', # to remove whitespace between row
)
f.write('\n') # remove this to delete whitespace between DataFrame
From my original answer here
Upvotes: 0
Reputation: 29
Just add newline='' where you are opening the file. It works for me. e.g., csvFileName = open('file.csv', 'w', newline= '')
Upvotes: 1
Reputation: 1283
Please note that csv 1.0 in Windows (requires '\n') and MAC OS (optional). The code below will output .csv file with no spaces between next line. It works in MAC and Windows.
import csv
for i in range (5):
MyList=[]
MyList.append(i)
cnword=0
with open('test_step1.csv', 'a') as f:
for item in MyList:
if cnword != len(MyList)-1:
f.write("%s," % item)
else:
f.write("%s" % item)
cnword+=1
f.write("\n" )
myList=[]
Upvotes: 1
Reputation: 21
I am using Python 3.6
and it seems that
csv.writer(open("test_step1.csv", "wb"), delimiter=",", newline="")
is not correct. Rather, newline=""
should added in the open()
clause.
Upvotes: 2
Reputation: 7906
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
Upvotes: 10