栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python】读写 CSV 编码数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python】读写 CSV 编码数据

读写 CSV 编码数据

对于大部分类型的 CSV 数据,都可以使用 CSV 库处理。对于如下CSV文件:

zzz@ubuntu:~/my_learning$ cat file3
Name,Stu_num,Sge,Class
Tom,001,12,1
Jack,002,13,2
Dana,003,12,1
Emma,004,12,2
zzz@ubuntu:~/my_learning$
1. 使用 CSV 库读取文件
>>> with open('file3', 'rt') as f:
...     f_csv = csv.reader(f)
...     print(f_csv)
...     headers = next(f_csv)
...     for row in f_csv:
...             print(row)
... 
<_csv.reader object at 0x7f8577beadd0>
['Tom', '001', '12', '1']
['Jack', '002', '13', '2']
['Dana', '003', '12', '1']
['Emma', '004', '12', '2']
>>>

这样就可以将文件的每一行处理成一个元组,可以使用 row[1] 的形式访问。这样的索引含义不太清楚。因此,可以使用 namedtuple 命名元组。

>>> with open('file3', 'rt') as f:
...     f_csv = csv.reader(f)
...     headers = next(f_csv)
...     Row = namedtuple('Row', headers)
...     for r in f_csv:
...         row = Row(*r)
...         print(row)
... 
Row(Name='Tom', Stu_num='001', Age='12', Class='1')
Row(Name='Jack', Stu_num='002', Age='13', Class='2')
Row(Name='Dana', Stu_num='003', Age='12', Class='1')
Row(Name='Emma', Stu_num='004', Age='12', Class='2')
>>>

使用 namedtuple 命名元组需要注意一个问题,就是列的标头需要是合法的 Python 标识符,这就需要在使用前对原始标头做必要的调整。另一种可行的方法是读取为字典序列。

>>> with open('file3', 'rt') as f:
...     f_csv = csv.DictReader(f)
...     for row in f_csv:
...         print(row)
... 
{'Name': 'Tom', 'Stu_num': '001', 'Age': '12', 'Class': '1'}
{'Name': 'Jack', 'Stu_num': '002', 'Age': '13', 'Class': '2'}
{'Name': 'Dana', 'Stu_num': '003', 'Age': '12', 'Class': '1'}
{'Name': 'Emma', 'Stu_num': '004', 'Age': '12', 'Class': '2'}
>>>
2. 使用 CSV 库写入文件

写入元组序列的数据:

>>> headers
['Name', 'Stu_num', 'Age', 'Class']
>>> rows
[('Nancy', '005', '13', '2'), ('Helen', '006', '12', '1')]
>>> with open('file3', 'w') as f:
...     f_csv = csv.writer(f)
...     f_csv.writerow(headers)
...     f_csv.writerows(rows)
... 
24
>>>
zzz@ubuntu:~/my_learning$ cat file3
Name,Stu_num,Age,Class
Nancy,005,13,2
Helen,006,12,1
zzz@ubuntu:~/my_learning$

或者写入字典序列的数据:

>>> R
[{'Name': 'Nancy', 'Stu_num': '005', 'Age': '13', 'Class': '2'}, {'Name': 'Helen', 'Stu_num': '006', 'Age': '12', 'Class': '1'}]
>>> with open('file3', 'w') as f:
...     f_csv = csv.DictWriter(f, headers)
...     f_csv.writeheader()
...     f_csv.writerows(R)
... 
24
>>>
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/924107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号