CSV文件读取的两种方式:
方式一:
这种方式读取到的每一条数据是一个列表,所以需要通过下标的方式获取具体某一个值:
import csv
with open('stock.csv', 'r', encoding='gbk') as fp:
reader = csv.reader(fp)
print(type(reader)) # 生成一个迭代器,需要循环遍历打印
for x in reader:
print(x) # 每个x都是一个列表
print(x[3]) # 通过下标取值
方式二:
这种方式读取到的每一条数据是一个字典,所以可以通过列名获取数据:
with open('stock.csv', 'r', encoding='gbk') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x['secShortName']) # 通过列名取值
==============================================
CSV文件的写入的两种方式:
方式一:
使用writerow
通过writerow:写入一行,通过writerows:写入多行
import csv
headers = ('name', 'age', 'height') # 表头
students = [
('张三', '18', '180'),
('李四', '19', '190'),
('王五', '18', '175')
]
with open('students.csv', 'w', encoding='UTF-8', newline='') as fp: # 将newline设置成空字符串,替换数据写入时的换行符
writer = csv.writer(fp)
writer.writerow(headers) # 写入一行
writer.writerows(students) # 写入多行
方式二:
使用DictWriter
使用字典的方式将数据写入
import csv
headers = ('name', 'age', 'height')
students = [
{'name': '张三', 'age': '18', 'height': '180'},
{'name': '李四', 'age': '19', 'height': '190'},
{'name': '王五', 'age': '18', 'height': '175'}
]
with open('students.csv', 'w', encoding='UTF-8', newline='') as fp:
writer = csv.DictWriter(fp, headers)
writer.writeheader() # 虽然创建DictWriter的时候,参数里有一个headers,但要想把数据写进去,还是需要调用writeheader()方法,否则表头数据写不进去
writer.writerows(students)