操作csv格式文件之csv.reader()方法

如何使用csv.reader()方法以及csv.reader()方法的作用

  • 首先我们我们来用一段代码来处理csv格式内容的文件,来模拟csv.reader()方法处理csv格式的文件
    示例代码1如下:
for line in open('sample'):
    id,name,age = line.split(',')
    print(id,name,age.strip('\n'))

sample为一个txt文件,文件内容如下:

id,name,age
1,jason,18
2,jian,20
3,xiaoming,30
4,dog,40

代码运行在终端输出的结果为:

id name age
1 jason 18
2 jian 20
3 xiaoming 30
4 dog 40
  • 此时我们对比示例代码1使用csv.reader()方法来处理csv格式文件
    示例代码2:
import csv
reader = csv.reader(open('sample'))
print(reader)  # <_csv.reader object at 0x0000017E2B94E938>
# reader中存储的是列表类型数据,为了方便理解我们就将reader看成是个列表嵌套列表的对象
for line in reader: # 这一步就相当于将reader中的每个列表取出
    print(line)   # ['id', 'name', 'age']
    # line是一个列表
    id,name,age = line
    print(id,name,age)

代码运行在终端输出的结果为:

<_csv.reader object at 0x0000021E1BC6F938>   # 来自于print(reader)
['id', 'name', 'age'] 	# 来自于print(line)
id name age    # 来自于print(id,name,age)
['1', 'jason', '18']
1 jason 18
['2', 'jian', '20']
2 jian 20
['3', 'xiaoming', '30']
3 xiaoming 30
['4', 'dog', '40']
4 dog 40

示例代码1中的print(id,name,age.strip('\n'))与示例代码2中的print(id,name,age)效果一致,从此我们就可以看出csv.reader()方法的作用相当于就是通过‘,’分割csv格式的数据,并将分割好的每行数据存入列表中,并且还去除了每行最后分割产生的数据尾部的空格、换行符、制表符等等,然后示例代码2中的reader = csv.reader(open('sample'))的reader变量为了方便大伙理解,我们可以把它看成是一个列表嵌套列表的对象相当于就是一个大列表里面包了许多的小列表,小列表中存储的就是csv文件中每行分割好的数据。

### 关于 `csv.reader` 的操作方法和使用示例 #### PythonCSV 文件读取基础 在 Python 中,标准库提供了 `csv` 模块来处理逗号分隔值 (CSV) 文件。其中最常用的功能之一就是通过 `csv.reader()` 函数创建一个迭代器用于逐行解析 CSV 数据[^1]。 #### 创建 Reader 对象 要开始使用 `csv.reader`,首先需要导入必要的模块并打开目标文件: ```python import csv with open('example.csv', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile, delimiter=',') ``` 这里的关键参数包括: - **newline=''**: 防止不同操作系统之间的换行符差异影响读写过程。 - **encoding='utf-8'**: 设置编码方式以支持更多字符集。 - **delimiter=','**: 明确指定字段间的分隔符,默认为逗号。 #### 迭代访问每行记录 一旦有了 `reader` 实例之后就可以像遍历其他可迭代对象一样对其进行循环操作了: ```python for row in reader: print(row) ``` 这段代码会依次输出每一行的内容作为一个列表形式展示出来,每个元素代表原文件里相应位置上的单元格内容。 #### 处理带标题的 CSV 文件 如果 CSV 文件的第一行为列名,则可以利用这些名称作为字典键来进行更直观的数据映射: ```python with open('scores_with_headers.csv', 'r', encoding='utf-8') as file: dict_reader = csv.DictReader(file) fieldnames = dict_reader.fieldnames # 获取表头信息 for entry in dict_reader: print({field: value for field, value in entry.items()}) ``` 此段脚本不仅能够获取到完整的头部定义(`fieldnames`),而且还能让后续逻辑更加清晰易懂地基于具体属性进行编程[^2]。 #### 解决潜在问题 当遇到某些情况下无法完全加载所有预期条目的情况时(比如只得到了部分而非全部),可能是由于源文件本身存在问题或是程序内部存在错误配置所引起的。对于前者而言,建议先尝试直接查看原始文档确认其格式无误;而对于后者来说则需仔细排查可能存在的路径设置不当等问题[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布兹学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值