从csv文件中读取数据
movies.csv文件中的数据
movie_id,ratting,time,director
1001,6.6,101,a1
1002,6.8,102,a2
1003,6.8,103,a3
1004,7.8,104,a4
1005,8.8,105,a5
1006,6.8,106,a6
1007,6.8,107,a7
1008,6.8,108,a8
1009,6.8,109,a9
1010,7.8,110,a10
1011,7.1,111,a11
1012,9.8,112,a12
1013,10.8,113,a13
1014,6.8,114,a14
1015,6.8,115,a15
1016,6.8,116,a16
1017,7.7,117,a17
1018,9.3,118,a18
1019,6.3,119,a19
1020,6.4,120,a20
1021,5.6,121,a21
1022,8.6,122,a22
1023,8.6,123,a23
1024,7.6,124,a24
1025,5.5,125,a25
1026,8.4,126,a26
1027,6.7,127,a27
1028,8.4,128,a28
1029,4.7,129,a29
1030,6.8,130,a30
import csv
'''
读取csv文件
'''
def read_csv_demo1():
with open("movies.csv","r",encoding="utf-8") as fp:
# reader是一个迭代器
reader = csv.reader(fp)
# next()函数是将迭代器的指针向下移动一位。此处如果不使用next()函数,读取时将包含第一行(标题行)
# next(reader)
for x in reader:
# 获取第二列ratting数据
ratting = x[1]
# 获取最后一列director数据
director = x[-1]
print({"ratting":ratting,"director":director})
def read_csv_demo2():
with open("movies.csv","r",encoding="utf-8") as fp:
# 使用DictReader()创建的reader对象不会包含标题的那行数据
# reader是一个迭代器,遍历这个迭代器,返回的是一个字典
reader = csv.DictReader(fp)
for x in reader:
# 获取ratting列数据
ratting = x["ratting"]
# 获取director列数据
director = x["director"]
print({"ratting": ratting, "director": director})
if __name__ == '__main__':
# read_csv_demo1()
read_csv_demo2()
将csv数据写入文件
import csv
'''
将csv数据写入文件
'''
# 使用元组的形式将数据写入到csv文件中
def wriite_csv_demo1():
# 定义标题行
headers = ["username", "age", "hight"]
# 要写入的数据(元组的形式)
values = [
("张三", 18, 180),
("李四", 19, 175),
("王五", 20, 170)
]
# newline参数不指定的话,默认为\n,即会在新建的每一行后面对一个换行符。
# 如果不想要每写入一行数据就添加一个空行的话,可将newline参数设置为空字符串
with open("students.csv","w",encoding="utf-8",newline="") as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)
# 使用字典的形式将数据写入到csv文件中
def wriite_csv_demo2():
headers = ["username", "age", "hight"]
values = [
{"username":"张三","age":10,"hight":170},
{"username":"李四","age":20,"hight":180},
{"username":"王五","age":30,"hight":190},
]
with open("students02.csv","w",encoding="utf-8",newline="") as fp:
writer = csv.DictWriter(fp,headers)
# 写入表头数据时,需要调用writerheader()方法
writer.writeheader()
writer.writerows(values)
if __name__ == '__main__':
wriite_csv_demo2()