点击跳转
《Python入门系列目录》
- 逗号分隔值(Comma-Separated Values, CSV),通常用于转移表格数据
- csv文件由任意数目的记录组成,记录间以某种换行符分割
- 每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的分隔符是逗号或制表符
- 用命令import csv可直接调用csv模块进行csv文件的读写
1. 读取csv文件
-
读取csv文件之前需要用open函数打开文件路径
-
读取csv文件的方法有两种
-
csv.reader函数
- 接受一个可迭代的对象,能返回一个生成器,从其中解析出csv的内容
- 利用csv.readerh函数读取的数据存储类型是列表
import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.reader(f) iris = [iris_item for iris_item in reader] print(iris) # 列表中的每一行都是一个列表,按csv文件中每一行作为一个列表
* csv.DictReader函数 * 接受一个可迭代的对象,能返回一个生成器,但返回的每一个单元格都放在一个字典的值内,而字典的键则是这个单元格的标题(即列头) ```python import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.DictReader(f) iris = [iris_item for iris_item in reader] print(iris)
-
如果用csv.DictReader函数读取csv文件的某一列,则可以用列的标题来查询
import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.DictReader(f) column = [iris_item['sepal length (cm)'] for iris_item in reader] print(column)
-
2. 写入.csv文件
-
对于列表形式的数据,除了csv.writer函数外,还需要用到writerow函数将数据逐行写入csv文件
import csv headers = ['Number', 'Name', 'Sex', 'Class', 'Chinese', "Math", 'English'] rows = [('101511', 'Jonh', 'M', 'Class 1', '72', '85', '82'), ('101513', 'May', 'F', 'Class 1', '75', '82', '51')] with open('test1.csv', 'w', newline='') as f: # 打开文件 f_csv = csv.writer(f) # 创建csv.writer对象 f_csv.writerow(headers) # 写入1行(标题) f_csv.writerows(rows) # 写入多行(数据)
-
字典形式的数据,csv模块提供了csv.DictWriter函数,除了提供open函数的参数外,还需要输入字典所有键的数据,然后通过writeheader函数在文件内添加标题,标题内容与键一致,最后使用writerows函数将字典内容写入文件
import csv headers = ['Number', 'Name', 'Chinese', "Math", 'English'] rows = [{'Number': '101511', 'Name': 'May', 'Chinese': '72', 'Math': '85', 'English': '82'}, {'Number': '101513', 'Name': 'John', 'Chinese': '75', 'Math': '82', 'English': '51'}] with open('test2.csv', 'w', newline='') as f: f_csv = csv.DictWriter(f, headers) # 创建csv.DictWriter对象,(文件名,标题) f_csv.writeheader() # 写入标题,不用再传参 f_csv.writerows(rows) # 写入多行(数据)