Python写入CSV文件

2025年6月6日 | 阅读 6 分钟

在 Python 中,我们可以使用 csv 模块来写入 CSV 文件。CSV(Comma-Separated Values,逗号分隔值)是一种简单的文件格式,用于将表格数据(例如来自电子表格或数据库的数据)以纯文本形式存储。

CSV 文件中的每一行数据都表示为纯文本文件中的一个单独的行,并且行中的各个数据项(或单元格)通常由逗号分隔。虽然逗号是标准的分隔符,但根据区域设置或特定应用程序的要求,我们也可以使用其他字符,如制表符或分号。

在 Python 中写入 CSV 文件的方法

Python 中有多种写入 CSV 文件的方法。下面将讨论其中一些方法:

1) 使用 csv.DictWriter()

使用 python csv.DictWriter,每一行将表示为一个字典,并且标题将以包含数据集的相应字典的键的形式给出。

语法

参数

  • file: 表示要以写入模式存储数据的 CSV 文件。
  • fieldnames: 此参数集用于包含一系列字符串,这些字符串枚举形成键,作为输出表第一行的标题。
  • restval (可选): 指定与字典中现有键不对应的键的默认值。
  • extrasaction (可选): 指定对参数中未预期的键的处理方式。
  • dialect (可选): 负责设置用于数据文件的某些参数的格式,例如引号、分隔符和字符串。

现在让我们看一个例子

示例

立即执行

输出

Name,Age,City
John,20,Hyderabad
Sachin,21,Pune
Lucy,40,New York

说明

首先,导入 csv 模块以启用 CSV 文件操作。随后,形成一个字典列表,其中每一行数据都表示为一个字典,键为列名。使用 open() 以写入模式 ('w') 打开文件,并创建一个 DictWriter 对象。

2) 使用 csv.writer()

Python 中的 csv.writer() 方法有助于将数据写入 CSV 文件,这些数据通常结构化为列表或元组,并逐行进行。它是 Python 内置 csv 模块的一部分,并提供了一种简单的方法来写入表格数据。

语法

参数

  • file: 以写入 ('w') 或追加 ('a') 模式打开的文件对象。
  • dialect: (可选) 控制格式(默认为 'excel')。
  • **fmtparams: 可选的格式参数,如分隔符、引号字符、行终止符等。

示例

立即执行

输出

John,30,New York
Peter,25,Los Angeles
Irfan,40,Chicago

说明

可以借助 csv.writer() 函数将包含在列表或元组中的每一行数据插入 CSV 文件。首先导入包含 CSV 文件名称的库。定义一个行列表,并用每个单独包含姓名、年龄和城市等数据进行填充。

Python 高级 CSV 写入

虽然 csv.writer() 和 csv.DictWriter() 的基本用法涵盖了大多数常见情况,但 Python 的 csv 模块也支持高级功能来处理更复杂的 CSV 写入需求。这些功能包括自定义分隔符、引号控制、追加数据以及处理缺失或多余的字段。

1) 自定义分隔符

默认情况下,CSV 文件使用逗号 (,) 作为分隔符。您可以使用 delimiter 参数将其更改为任何字符(例如,分号、制表符)。

示例

立即执行

输出

Product;Price;Stock
Pen;2.5;100
Notebook;3.0;50

说明

此代码将产品数据列表写入名为 semicolon_output.csv 的 CSV 文件。它使用 csv.writer() 函数,并将分号 (;) 作为分隔符,而不是默认的逗号。data 中的每个子列表都成为 CSV 文件中的一行,值由分号分隔。此格式通常用于逗号用作小数点的地方。

2) 引号字段

包含逗号或引号等特殊字符的 CSV 字段可以加引号。使用以下选项进行更精细地控制:

  • QUOTE_MINIMAL - 仅在必要时加引号(默认)
  • QUOTE_ALL - 为所有字段加引号
  • QUOTE_NONNUMERIC - 为所有非数字字段加引号
  • QUOTE_NONE - 永远不加引号(需要转义字符)

示例

立即执行

输出

"Name","Comment"
"Lucy","She said ""Hello"""
"Johnson","Nice to meet you."

说明

该示例将数据写入 CSV 文件,并将 csv.QUOTE_ALL 选项设置为 True,这意味着每个字段都将用双引号括起来。如果字段包含逗号或引号字符等分隔符,可能会被错误解释,此时此选项很有用。例如,如果注释包含双引号,那么在文本加双引号的情况下,它们会通过加倍来转义。

3) 在 DictWriter 中处理缺失字段

在使用 DictWriter 类时,可以通过设置默认值来使用 restval 参数处理缺失的键。

示例

立即执行

输出

Name,Age,City
Lucy,30,N/A
Peter,25,Miami

说明

此示例使用 csv.DictWriter 模块填充 CSV 文件,并为所有缺失字段提供 'N/A' 的默认值(使用 restval)。如果字典缺少某个字段,例如 Lucy 的 'City' 字段,则该字段将自动替换为 'N/A'。备用值会被放置在某些条目上,例如 Lucy,而对于拥有所有字段的其他条目,如 Peter,则正常写入值。

结论

在本教程中,我们学习了如何在 Python 中写入 CSV 文件。我们发现了写入 CSV 文件的几种方法。我们理解了 csv.DictWriter() 和 csv.writer() 的工作原理。然后,我们研究了一些可以帮助我们使用 Python 高效写入 CSV 文件的技巧。

Python 写入 CSV 文件选择题

1. 下列哪个模块用于在 Python 中处理 CSV 文件?

  1. json
  2. os
  3. csv
  4. Webhose.io
 

答案: c) csv


2. csv.DictWriter() 中的 fieldnames 参数指定什么?

  1. 缺失字段的默认值
  2. 输出 CSV 文件的名称
  3. CSV 文件的标题列表
  4. CSV 文件的格式选项
 

答案: c) CSV 文件的标题列表


3. 在 csv.writer() 中使用哪个参数可以将默认分隔符从逗号更改为其他字符(例如,分号)?

  1. quotechar
  2. lineterminator
  3. restval
  4. delimiter
 

答案: d) delimiter


4. csv.DictWriter() 中的 restval 参数会做什么?

  1. 静默跳过缺失字段
  2. 为缺失字段引发错误
  3. 用默认值填充缺失字段
  4. 删除 CSV 中的空行
 

答案: c) 用默认值填充缺失字段


5. csv.writer() 中的哪个引号选项确保所有字段都用双引号括起来?

  1. csv.QUOTE_MINIMAL
  2. csv.QUOTE_NONNUMERIC
  3. csv.QUOTE_NONE
  4. csv.QUOTE_ALL
 

答案: d) csv.QUOTE_ALL