我现在正在使用csv包,每当我写一个新的csv文件并用excel打开它时,我会在每两行之间找到一个空行。
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)
答案 0 :(得分:2)
您需要以wb模式打开文件:
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)
csv.writer直接将 \ r \ n 写入文件。
如果您未在binary mode中打开文件,则会写入 \ r \ n \ r \ n ,因为在Windows文本模式下会翻译每个 \ n 进入 \ r \ n 。
编辑:
对于python 3,必须按this answer
将newline=""
添加到 csv.writer
答案 1 :(得分:1)
我正在使用Python 3.6
,似乎
csv.writer(open("test_step1.csv", "wb"), delimiter=",", newline="")
不正确。相反, newline=""
应添加到open()
子句中。
答案 2 :(得分:0)
请注意,Windows中的csv 1.0(要求'\ n')和MAC OS(可选)。下面的代码将输出.csv文件,下一行之间没有空格。它适用于MAC和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=[]