使用`csv.DictWriter`编写CSV会导致填充数据行之间出现空行

时间:2018-04-14 15:49:40

标签: python python-3.x python-2.7 csv

我使用DictWWriter将数据写入csv文件。该文件在我的数据行之间包含空行。现在的数据被放到行1,3,5,7,9,我想把它们分成1,2,3,4,5行,中间没有空行。

import csv

with open('example4.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name', 'Grade']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian'})
    writer.writerow({'Grade': 'A', 'first_name': 'Rachael',
                    'last_name': 'Rodriguez'})
    writer.writerow({'Grade': 'B', 'first_name': 'Jane', 'last_name': 'Oscar'})
    writer.writerow({'Grade': 'B', 'first_name': 'Jane', 'last_name': 'Loive'})

Image

1 个答案:

答案 0 :(得分:0)

Patrick Haugh的评论已经为您提供了解决方案。您可以通过查看文档来自己找到答案。

csv.writer

  

csv.writer(csvfile, dialect='excel', **fmtparams)
  返回负责将用户数据转换为的编写器对象   给定的类文件对象上的分隔字符串。 csvfile可以是任何   使用write()方法的对象。 如果csvfile是文件对象,它应该   使用newline='' [1] 打开

并且

  

<强>脚注

     

[1] (1,2)如果未指定newline='',则嵌入换行符   内部引用字段将无法正确解释,并且打开   将添加使用\ r \ n linendings写入额外\ r \ n的平台。   从csv模块开始,指定newline=''应始终是安全的   做自己的(通用)换行处理。

它还提供了一个小代码示例:

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])