在python中使用writer之后在行之间的空白空间

时间:2013-05-31 19:40:06

标签: python csv python-3.3 writer

我现在正在使用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)

enter image description here

3 个答案:

答案 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=[]