提示信息

Python 基础:深入了解 CSV 文件的写入与读取

沦陷的痛╰ 已关注

在 Python 中,处理 CSV(Comma-Separated Values,逗号分隔值)文件是非常常见的任务,尤其是在数据处理和分析领域。Python 提供了一个内置的 csv 模块,使得读取和写入 CSV 文件变得简单和高效。以下是关于 CSV 文件的读取和写入的一些深入讲解。

1. 读取 CSV 文件

读取 CSV 文件主要使用 csv.readercsv.DictReader。前者适用于简单的行数据读取,后者则适用于将数据作为字典读取。

使用 csv.reader

  1. import csv
  2. with open('example.csv', newline='') as csvfile:
  3. csvreader = csv.reader(csvfile)
  4. for row in csvreader:
  5. print(row)
  • 参数newline='' 是推荐的,因为在不同的平台上可能会导致意外的换行符行为。
  • 返回值:每一行的数据作为一个列表返回。

使用 csv.DictReader

  1. import csv
  2. with open('example.csv', newline='') as csvfile:
  3. csvreader = csv.DictReader(csvfile)
  4. for row in csvreader:
  5. print(row)
  • 功能:每行被自动解析为字典,列标题用作字典的键,这样便于访问特定列的数据。
  • 适用场景:当 CSV 文件有标题行时,使用 DictReader 可以提高代码的可读性和可维护性。

2. 写入 CSV 文件

写入 CSV 文件通常使用 csv.writercsv.DictWriter

使用 csv.writer

  1. import csv
  2. data = [['Name', 'Age', 'City'],
  3. ['Alice', 30, 'New York'],
  4. ['Bob', 25, 'Los Angeles']]
  5. with open('output.csv', 'w', newline='') as csvfile:
  6. csvwriter = csv.writer(csvfile)
  7. csvwriter.writerows(data)
  • 方法
    • writerow(row): 写入单行。
    • writerows(rows): 写入多行。

使用 csv.DictWriter

  1. import csv
  2. fieldnames = ['Name', 'Age', 'City']
  3. data = [
  4. {'Name': 'Alice', 'Age': 30, 'City': 'New York'},
  5. {'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'}
  6. ]
  7. with open('output.csv', 'w', newline='') as csvfile:
  8. csvwriter = csv.DictWriter(csvfile, fieldnames=fieldnames)
  9. csvwriter.writeheader() # 写入表头
  10. csvwriter.writerows(data)
  • 功能:通过字典的键与 CSV 列头进行关联,便于动态结构的写入。
  • 优点:自动处理列头,减少手动管理的繁琐。

3. 常见注意事项

  • 编码问题:默认情况下,Python 会假定文件的编码为系统默认编码(通常是 UTF-8),必要时应显式指定文件的编码,如 encoding='utf-8'
  • 分隔符:CSV 文件并不一定要用逗号作为分隔符。可以通过 csv.readercsv.writerdelimiter 参数指定其他分隔符,如 delimiter=';'
  • 数据的清理:在处理过程中,注意数据的清理,如移除空行、去除多余的空格等,以保证数据的一致性和正确性。
  • 错误处理:使用 try-except 块来捕获和处理读取或写入过程中的 I/O 错误。

通过上述方法和注意事项,你可以在 Python 中轻松处理 CSV 文件,为数据分析和管理工作打下坚实基础。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
沦陷的痛╰ 关注 已关注

最近一次登录:2024-11-20 10:58:54   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图