昨天发了篇文章,是讲如何读取
.xls
格式文件的,今天来说下CSV
文件怎么读取。我个人用CSV
还是比较多的,因为读取起来比较方便。
小试牛刀
示例文件
来个简单式的
读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。
import csv
with open('test.csv','r') as f:
content=csv.reader(f)
for i in content:
print(i)
如果希望仅仅读取一行或者一列可以这样做:
获取一行
import csv
with open('test.csv','r') as f:
content=csv.reader(f)
print(list(content)[1])
获取一列
import csv
with open('test.csv','r',encoding="utf-8") as f:
content=csv.reader(f)
for i in content:
print(i[1])
单个读出
按照第一行的title
进行读取。
import csv
def get_data(file_name):
with open(file_name,encoding="utf-8") as csvfile:
reader =list( csv.DictReader(csvfile))
for row in reader:
# 循环打印数据的id和class值
print(row["id"],row["class"])
# 1 2
# 2 3
# 3 4
print(row)
# orderedDict([('id', '2'), ('class', '3')])
# OrderedDict([('id', '3'), ('class', '4')])
return reader
get_data('test.csv')
封装案例
Python 中的csv模块实现了以csv格式读取和写入表格数据的类,可以从Excel生成的csv文件中读取数据。
reader对象和writer对象以列表的形式读写数据,DictReader类和DictWriter类以字典的形式读取数据。
示例文件
'''
序号,usename,password,mobile,预期结果,实际结果,测试结果
1,,123456,15313167402,400,,
2,test_user,123456,15313167402,400,,
3,test_user,123456,15313167402,400,,
4,test_user,123456,15313167402,400,,
5,test_user,123457,15313167403,401,,
'''
代码展示
import csv
from datetime import datetime
def get_data(filename):
'''从csv中读取数据'''
with open(filename) as f:
data = list(csv.DictReader(f))
return data
data =get_data('test2.csv')
def put_data(data):
'''将结果保存到新的csv文件中'''
filename = f'{datetime.now().strftime("%Y-%m-%d_%H_%M_%S")}.csv'
with open(filename, "w", newline='') as f:
headers = data[0].keys()
writer = csv.DictWriter(f, headers)
writer.writeheader()
writer.writerows(data)
put_data(data)
另:有同学说要看封装,其实之前写过了。