python 读写CSV篇(CSV)

python 读写CSV篇(CSV)

一、csv环境

Python的csv库主要用于处理CSV格式的数据文件。‌CSV(‌Comma-Separated Values,‌逗号分隔值)‌是一种常见的数据交换格式,‌其中数据以纯文本的形式存储,‌各字段之间通过某种分隔符(‌如逗号、‌分号或制表符)‌进行分隔。‌Python的csv库提供了一系列工具,‌使得程序员可以高效地读写这种格式的数据,‌而无需关心CSV格式的具体实现细节。‌
python 中csv库是标准库,不需要安装哦,哈哈哈,不过要保证Python版本3.2以上哦,直接用起来吧

二、csv 打开方式

1.在这之前,我们需要简单了解一下文件操作Tips,是用with open读写还是open读写csv文件呢

# [强烈推荐使用] with opend读写:打开操作完后会自动关闭
with open('example.csv', 'w', newline='') as file:
	count = file.readlines()
	
# open读写:只会打开,不会自动关闭,需要我们添加个close
open('example.csv', 'w', newline='') as file:
	count = file.readlines()
	file.close()

三、csv文本方式写入

读写文件时,确保使用 newline=“”,参数来防止在不同平台上的换行符问题。
“w” 是新建文件并写入
“r” 是仅读取文件内容
“a” 是原有文件基础上写入

a. 字段名的写入

import csv

# 创建 CSV 文件并写入字段名
with open('example.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    
    # 预设字段名方式一
    header = 'Name', 'Age', 'City'
    writer.writerow(header)
    
    # 预设字段名方式二
    header = [['Name', 'Age', 'City']]
    writer.writerows(header)

方式一和方式二执行执行结果
在这里插入图片描述

b. 多内容一起写入,需要以逗号隔开

import csv

# 字段名和内容
data = [
	['Name', 'Age', 'City'],
	["Tom", 18, "New York"],
	["Jerry", 18, "New York"]
]

# 创建 CSV 文件并写入字段名
with open('example.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

执行结果
在这里插入图片描述

c. 我们想加个内容怎么办呢?

PS:请注意 writerowwriterows 的区别哈
加单行,使用writerow
加多行,使用writerows

import csv

# 字段名和内容
data = [
	['Name', 'Age', 'City'],
	["Tom", 18, "New York"],
	["Jerry", 18, "New York"]
]

# 创建 CSV 文件并写入字段名
with open('example.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

    data2 = "Bob", 20, "Guangzhou"
    writer.writerow(data2)

    data3 = [["Alice", 35, "Lundun"]]
    writer.writerows(data3)

    data4 = ("Page", 25, "Lundun"), ("George", 30, "Guangzhou"), ("Judy", 19, "New York")
    writer.writerows(data4)

执行结果
在这里插入图片描述

还有一种方式可以加内容,写成函数方式,然后调用一次就写入一次
PS:记得要使用"a"格式哦

import csv

def csv_writer(file_name, data):
	# 列表 方式写入csv
	with open('example.csv', 'a', newline='') as file:
	    writer = csv.writer(file)
	    writer.writerows(data)

data = [["Alice", 35, "Lundun"]]
csv_writer('example.csv', data)

我执行了三次的结果
在这里插入图片描述

四、csv文本方式读取

import csv

# 读取 CSV 文件方式一(每行都是一个列表)[推荐使用]
with open('example.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
        
# 读取 CSV 文件方式二(返回第一行)
with open('example.csv', 'r') as file:
    reader = file.readline()
    print(reader)
    
# 读取 CSV 文件方式三(返回全部,集成在一个列表)[推荐使用]
with open('example.csv', 'r') as file:
    reader = file.readlines()
    print(reader)
    
# 读取 CSV 文件方式四(返回全部,集成在一个字符串)
with open('example.csv', 'r') as file:
    reader = file.read()
    print(reader)

方式一执行结果
在这里插入图片描述
方式二执行结果
在这里插入图片描述
方式三执行结果
在这里插入图片描述
方式四执行结果
在这里插入图片描述

五、csv文本方式精准读取

python均是以0开始读数,所以第三行会等于2

读取行:Name = 0, Tom = 1, Jerry = 2, Bob = 3 … Judy = 7
读取列:Name = 0, Age = 1, City = 2
在这里插入图片描述

""" 我们需要获取第三行第一列的数据 """
# 第三行 = 2
# 第一列 = 0

with open('example.csv', 'r') as file:
    reader = file.readlines()
    
  	# 读取第三行第一列交叉点的数据
    print("执行结果:%s" % reader[2].split(",")[0])

执行结果:Jerry

""" 我们需要获取第三行第Age列的数据 """
# 第三行 = 2

with open('example.csv', 'r') as file:
    reader = file.readlines()
    
	# 获取Age列的数值
    datalow = reader[0].split(",").index("Age")
    
	# 读取第三行Age列的值
    print("执行结果:%s" % reader[2].split(",")[datalow])

执行结果:18

""" 我们需要获取 Page 所在的 City 的怎么办呢? """

with open('example.csv', 'r') as file:
    reader = file.readlines()

    # 获取字段名所在的列,去除数据中带有\n, 避免索引不到元素
    low = reader[0].replace("\n", "").split(",")
    
    # 我们已知Page是人名,存在Name列中
    Namelow = low.index("Name")
    
    # 从 Name 列找到 Page 所在的行
    for row in reader:
    	if "Page" == row.split(",")[Namelow]:
    		datarow = reader.index(row)
    		print(Namerow)
    		
   	# 我们要找到Page所在的城市,存在City列中
    Citylow = low.index("City")
 
    print("执行结果:%s" % reader[Namerow].split(",")[Citylow])

执行结果:Lundun

六、csv字典方式写入

在使用 DictReader 和 DictWriter 时,字段名的顺序是敏感的

import csv

# 预设字段名
field = ['Name', 'Age', 'City']

with open('example2.csv', 'w', newline='') as file:

    writer = csv.DictWriter(file, fieldnames=field)
    writer.writeheader()
    
    data = {'Name': 'Alice', 'Age': 30, 'City': 'New York'}
    writer.writerow(data)
	
	datas = ({'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'}, {'Name': 'Page', 'Age': 20, 'City': 'Lundun'})
	writer.writerows(datas)  

执行结果
在这里插入图片描述

七、csv字典方式读取

import csv

#reader是一个迭代器,是以字典的形式读出来
with open('example2.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)

执行结果
在这里插入图片描述

如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值