昨天发了篇文章,是讲如何读取.xls格式文件的,今天来说下CSV文件怎么读取。我个人用CSV还是比较多的,因为读取起来比较方便。

小试牛刀

示例文件
读取csv - 图1
来个简单式的

读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。

  1. import csv
  2. with open('test.csv','r') as f:
  3. content=csv.reader(f)
  4. for i in content:
  5. print(i)

读取csv - 图2

如果希望仅仅读取一行或者一列可以这样做:

获取一行
  1. import csv
  2. with open('test.csv','r') as f:
  3. content=csv.reader(f)
  4. print(list(content)[1])

读取csv - 图3

获取一列
  1. import csv
  2. with open('test.csv','r',encoding="utf-8") as f:
  3. content=csv.reader(f)
  4. for i in content:
  5. print(i[1])

读取csv - 图4

单个读出

按照第一行的title进行读取。

  1. import csv
  2. def get_data(file_name):
  3. with open(file_name,encoding="utf-8") as csvfile:
  4. reader =list( csv.DictReader(csvfile))
  5. for row in reader:
  6. # 循环打印数据的id和class值
  7. print(row["id"],row["class"])
  8. # 1 2
  9. # 2 3
  10. # 3 4
  11. print(row)
  12. # orderedDict([('id', '2'), ('class', '3')])
  13. # OrderedDict([('id', '3'), ('class', '4')])
  14. return reader
  15. get_data('test.csv')

读取csv - 图5

封装案例

Python 中的csv模块实现了以csv格式读取和写入表格数据的类,可以从Excel生成的csv文件中读取数据。

reader对象和writer对象以列表的形式读写数据,DictReader类和DictWriter类以字典的形式读取数据。

示例文件
读取csv - 图6

  1. '''
  2. 序号,usename,password,mobile,预期结果,实际结果,测试结果
  3. 1,,123456,15313167402,400,,
  4. 2,test_user,123456,15313167402,400,,
  5. 3,test_user,123456,15313167402,400,,
  6. 4,test_user,123456,15313167402,400,,
  7. 5,test_user,123457,15313167403,401,,
  8. '''

代码展示

  1. import csv
  2. from datetime import datetime
  3. def get_data(filename):
  4. '''从csv中读取数据'''
  5. with open(filename) as f:
  6. data = list(csv.DictReader(f))
  7. return data
  8. data =get_data('test2.csv')
  9. def put_data(data):
  10. '''将结果保存到新的csv文件中'''
  11. filename = f'{datetime.now().strftime("%Y-%m-%d_%H_%M_%S")}.csv'
  12. with open(filename, "w", newline='') as f:
  13. headers = data[0].keys()
  14. writer = csv.DictWriter(f, headers)
  15. writer.writeheader()
  16. writer.writerows(data)
  17. put_data(data)

另:有同学说要看封装,其实之前写过了。

参考文章:

https://docs.python.org/3.7/library/csv.html#module-csv