Python CSV模块简介

本文深入讲解Python中CSV模块的使用,包括基本的读写操作、字典方式读写、特殊字符处理以及Dialects概念。适合初学者和需要进阶了解CSV处理的开发者。

CSV

csv文件格式是一种通用的电子表格和数据库导入导出格式。最近我调用RPC处理服务器数据时,经常需要将数据做个存档便使用了这一方便的格式。

简介

Python csv模块封装了常用的功能,使用的简单例子如下:

# 读取csv文件
import csv
with open('some.csv', 'rb') as f:        # 采用b的方式处理可以省去很多问题
    reader = csv.reader(f)
    for row in reader:
        # do something with row, such as row[0],row[1]


import csv
with open('some.csv', 'wb') as f:      # 采用b的方式处理可以省去很多问题
    writer = csv.writer(f)
    writer.writerows(someiterable)

默认的情况下, 读和写使用逗号做分隔符(delimiter),用双引号作为引用符(quotechar),当遇到特殊情况是,可以根据需要手动指定字符, 例如:

import csv
with open('passwd', 'rb') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print row

上述示例指定冒号作为分隔符,并且指定quote方式为不引用。这意味着读的时候都认为内容是不被默认引用符(")包围的。quoting的可选项为: QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_NONE.

有点需要注意的是,当用writer写数据时, None 会被写成空字符串,浮点类型会被调用 repr() 方法转化成字符串。所以非字符串类型的数据会被 str() 成字符串存储。所以当涉及到unicode字符串时,可以自己手动编码后存储或者使用csv提供的 UnicodeWriter, 具体可参见这里

字典方式地读写

csv还提供了一种类似于字典方式的读写,方式如下:

格式如下:

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

其中fieldnames指定字典的key值,如果reader里没有指定那么默认第一行的元素,在writer里一定要指定这个。

使用示例

# 读
>>> import csv
>>> with open('names.csv') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         print(row['first_name'], row['last_name'])
...
Baked Beans
Lovely Spam
Wonderful Spam


# 写

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

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

其它

csv模块还涉及了其它的概念,比如 Dialects, 还提供了供错误处理的 exception csv.Error 等,因为实际使用较少及就不累赘在此。更多参考官方文档

参考资料

转载于:https://www.cnblogs.com/nisen/p/6155492.html

内容概要:本文档详细介绍了使用Python实现多元变分模态分解(MVMD)信号分量可视化的过程。项目背景指出,随着科技发展,复杂多元信号的处理变得越来越重要,而MVMD方法因其能处理多个信号之间的耦合关系,成为一种有效的信号分解手段。项目目标包括实现MVMD算法、进行多元信号耦合分析、信号可视化和提升信号处理能力。文档详细描述了MVMD算法的原理、实现步骤、面临的挑战、创新点及应用领域。此外,文档还提供了完整的代码实现,包括数据预处理、模型训练、可视化、GUI界面设计、防止过拟合与超参数调整等内容。适合人群:具备一定编程基础,尤其是熟悉Python编程语言的研发人员、数据分析师和信号处理工程师。使用场景及目标:①帮助研究人员和工程师在实际应用中更好地理解和分析多元信号的内在规律,提升信号处理的效率与准确性;②适用于机械故障诊断、金融市场分析、生物医学信号处理、地震数据分析和智能交通等领域;③通过Python代码实现MVMD方法,使用户能够进行信号分解与重建、多元信号耦合分析、信号可视化等任务。其他说明:项目不仅实现了MVMD算法,还结合了优化算法来加速计算过程,提高了分解效率。通过将分解结果进行可视化,研究人员可以更直观地理解信号的变化趋势和不同模态的物理意义。此外,项目还提供了灵活的参数调节机制,使得用户可以根据实际需求调整算法的精度和收敛性。项目未来改进方向包括深度学习模型优化、实时处理能力提升、多模态分析与应用等方面。文档中还包含了详细的代码示例和GUI界面设计,帮助用户快速上手并应用MVMD方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值