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

5t7ly7z5  于 11个月前  发布在  Python
关注(0)|答案(5)|浏览(154)

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

字符串


的数据

ahy6op9u

ahy6op9u1#

你需要在浏览器模式下打开文件,尝试:

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写入文件。
如果您不以二进制模式打开文件,它将写入
\r\r\n**,因为在Windows文本模式下,将每个**\n转换为\r\n**。
编辑:
对于python 3,必须按照this answernewline=""添加到csv.writer

nzrxty8p

nzrxty8p2#

我正在使用Python 3.6,似乎
csv.writer(open("test_step1.csv", "wb"), delimiter=",", newline="")
是不正确的,应该在open()子句中加上 newline=""

798qvoo8

798qvoo83#

请注意,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=[]

字符串

xzabzqsa

xzabzqsa4#

只需在打开文件的位置添加newline=''即可。这对我很有效。例如,csvFileName = open('file. csv','w',newline='')

ztyzrc3y

ztyzrc3y5#

对于那些使用pandas.DataFrame的,使用lineterminator删除行之间的空格,使用'.write('\n')在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

字符串
原始答案here

相关问题