Python入门(二十五):读写csv文件

点击跳转
《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)               # 写入多行(数据)
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值