描述:
csv模块是用来处理csv文件的一个模块
CSV:(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
在CSV文件中,以“,”作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。
读取csv文件的两个方法:
- reader:
- DictReader:
文件名:t.csv
csv文件内容:
name,age
zhangsan,21
lisi,20
yilisabai,19
rose,18
代码示例:
import csv
# 打印列表里的元素
def print_element(list):
# print("==")
for i in dict_reader:
print(i)
# 分割线
def cut_off():
print("_" * 100)
# 文件路径
file_path = "e:/t.csv"
# 打开文件
with open(file_path) as file:
print("代码块1:")
reader = csv.reader(file)
cut_off()
print("直接打印reader方法获得的对象:",reader)
cut_off()
print("迭代打印reader方法获得的对象:")
for v in reader:
print(v)
cut_off()
# print("代码块2:")
# dict_reader = csv.DictReader(file)
# print("直接打印DictReader方法获得的对象:" ,dict_reader)
# cut_off()
# print("迭代打印DictReader方法获得的对象:")
# for i in dict_reader:
# print(i)
#
# cut_off()
file.close()
运行结果:
代码块1:
____________________________________________________________________________________________________
直接打印reader方法获得的对象: <_csv.reader object at 0x000002917DFFD868>
____________________________________________________________________________________________________
迭代打印reader方法获得的对象:
['name', 'age']
['zhangsan', '21']
['lisi', '20']
['yilisabai', '19']
['rose', '18']
____________________________________________________________________________________________________
Process finished with exit code 0
由代码块1可以看出,两个方法返回的都是迭代器对象,reader方法在迭代后的每一行都是一颗列表,并且是按照文件的内容返回的(结果 5 rows)
____________________________________________________________________________________________________
代码块2:
直接打印DictReader方法获得的对象: <csv.DictReader object at 0x000001B9621405C0>
____________________________________________________________________________________________________
迭代打印DictReader方法获得的对象:
OrderedDict([('name', 'zhangsan'), ('age', '21')])
OrderedDict([('name', 'lisi'), ('age', '20')])
OrderedDict([('name', 'yilisabai'), ('age', '19')])
OrderedDict([('name', 'rose'), ('age', '18')])
Process finished with exit code 0
____________________________________________________________________________________________________
DictReader方法返回的值是元组类型,并且将内容组成了k,v的形式。(结果 4 rows)
参考:
博客1:https://blog.csdn.net/ko_tin/article/details/72627266
博客2:https://www.cnblogs.com/yanglang/p/7126660.html
未完成