【问题标题】:Writing CSV with `csv.DictWriter` results in empty lines between filled data lines [duplicate]使用 `csv.DictWriter` 写入 CSV 会导致填充数据行之间出现空行 [重复]
【发布时间】:2018-09-24 18:35:51
【问题描述】:

我使用 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'})

【问题讨论】:

  • 你得到了什么输出,你期望什么输出?
  • 对我来说看起来不错。究竟是什么问题?
  • 我希望将数据写入文件CSV结果中的下一行(当前数据写入CSV文件中的第1,3,5,7,9行,我希望它写在第1,2行, 3,4,5)

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


【解决方案1】:

您可以通过查看文档自己找到答案。:

csv.writer:

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

脚注

[1] (1, 2) 如果未指定newline='',则嵌入换行符 内部引用的字段将不会被正确解释,并且 在写入时使用 \r\n 衬里的平台将添加额外的 \r。 指定newline='' 应该始终是安全的,因为 csv 模块 自己(通用)换行处理。

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

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'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多