python CSV表格读写教程
一、csv环境
python 中csv库是标准库,不需要安装哦,哈哈哈,可以直接用起来吧
二、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:请注意 writerow 和 writerows 的区别哈
加单行,使用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文本方式精准读取
这是我们要读取的csv表格,python均是以0开始读数
读取行: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)
执行结果