当前位置: 首页 > news >正文

【Python】数据处理:CSV文件操作

CSV 文件(Comma-Separated Values,逗号分隔值文件)是一种常见的文本文件格式,用于存储表格数据。它的特点是用逗号或其他特定字符(如分号、制表符等)来分隔不同的字段,每行代表表格中的一条记录。

import csv

基本读写

读取 CSV 文件

最基本的功能是读取 CSV 文件。这可以通过 csv.reader 来实现。

with open('example.csv', newline='') as csvfile:csvreader = csv.reader(csvfile)  #每行内容解析为列表for row in csvreader:print(row)

这里,newline='' 是为了确保读取时不会因为行结束符的问题出现错误。

写入 CSV 文件

写入 CSV 文件可以使用 csv.writer

with open('output.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile)csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])

writerow 方法用于写入单行数据。

字典读写

使用字典读取 CSV 文件

为了更方便地处理 CSV 文件,可以使用 csv.DictReader,它将每行数据读成字典。

with open('example.csv', newline='') as csvfile:csvreader = csv.DictReader(csvfile)  # 创建 DictReader 对象headers = csvreader.fieldnames  # 可获取表头print("Headers:", headers)for row in csvreader:  # 逐行读取数据print(row)

DictReader 会自动将第一行作为字典的键。

使用字典写入 CSV 文件

类似地,使用 csv.DictWriter 可以将字典写入 CSV 文件。

with open('output.csv', 'w', newline='') as csvfile:fieldnames = ['Name', 'Age', 'City']csvwriter = csv.DictWriter(csvfile, fieldnames=fieldnames)csvwriter.writeheader()  # 写入表头csvwriter.writerow({'Name': 'Alice', 'Age': 30, 'City': 'New York'})csvwriter.writerow({'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'})

writeheader 方法用于写入表头。

复杂处理

处理不同的分隔符

CSV 文件并不总是用逗号分隔,可以用不同的分隔符。

with open('example_tab.csv', newline='') as csvfile:csvreader = csv.reader(csvfile, delimiter='\t')for row in csvreader:print(row)

同样地,在写入时也可以指定分隔符。

with open('output_tab.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, delimiter='\t')csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])

处理复杂的 CSV 格式

有时 CSV 文件中包含引号、换行符等特殊字符,可以使用 csv 模块中的 QUOTE_* 常量进行处理。

with open('complex.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New\nYork'])csvwriter.writerow(['Bob', '25', 'Los "Angeles"'])

常见的 QUOTE_* 常量包括:

  • csv.QUOTE_ALL: 对所有字段都加引号
  • csv.QUOTE_MINIMAL: 只对包含特殊字符的字段加引号
  • csv.QUOTE_NONNUMERIC: 对所有非数字字段加引号
  • csv.QUOTE_NONE: 不加引号

自定义 CSV 方言

可以通过 csv.register_dialect 创建自定义的 CSV 方言,方便处理不同格式的 CSV 文件。

csv.register_dialect('mydialect', delimiter=';', quoting=csv.QUOTE_NONE)
with open('example.csv', newline='') as csvfile:csvreader = csv.reader(csvfile, dialect='mydialect')for row in csvreader:print(row)

在写入时也可以使用自定义方言:

with open('output.csv', 'w', newline='') as csvfile:csvwriter = csv.writer(csvfile, dialect='mydialect')csvwriter.writerow(['Name', 'Age', 'City'])csvwriter.writerow(['Alice', 30, 'New York'])csvwriter.writerow(['Bob', 25, 'Los Angeles'])
http://www.lryc.cn/news/373422.html

相关文章:

  • SpringBoot集成Elasticsearch实例
  • 2024.ZCPC.M题 计算三角形个数
  • Java常见设计模式入门与实践
  • 110.平衡二叉树
  • 字符串数组——传递文本的不同方法实例
  • JDBC简介
  • RK3568平台(触摸篇)触摸屏基本原理
  • 【太原理工大学】软件系统安全—分析题
  • 【仪器仪表/电源专题】浮地信号的测试的四种方案对比
  • Centos7安装jdk8或11以及切换方案
  • 计算机二级Access选择题考点—代码篇
  • 海外仓系统如何让海外仓受益,WMS海外仓系统使用指南
  • 贪心-区间问题
  • 算法分析与设计期末考试复习GDPU
  • 分批次训练和评估神经网络模型
  • 【CS.AL】算法核心之分治算法:从入门到进阶
  • leetcode刷题记录:hot100强化训练2:二叉树+图论
  • 湘潭大学信息与网络安全复习笔记2(总览)
  • C语言:头歌使用函数找出数组中的最大值
  • 【技巧】Leetcode 191. 位1的个数【简单】
  • 【Pandas驯化-02】pd.read_csv读取中文出现error解决方法
  • linux下C语言如何操作文件(三)
  • 6.14作业
  • MySQL数据库管理(一)
  • Kafka使用教程和案例详解
  • TGI模型- 同期群-评论文本
  • ESP32 BLE学习(0) — 基础架构
  • 【JAVA】Java中Spring Boot如何设置全局的BusinessException
  • pdf.js实现web h5预览pdf文件(兼容低版本浏览器)
  • SSID简介