zoukankan      html  css  js  c++  java
  • python之CSV模块

    python之CSV模块

    csv文件

    0. csv文件介绍

    csv文件格式是一种通用的电子表格和数据库导入导出格式。最近我调用RPC处理服务器数据时,经常需要将数据做个存档便使用了这一方便的格式。

    python中有一个读写csv文件的包,直接import csv即可。利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下。

    1. 写入文件

    我们把需要写入的数据放到列表中,写文件时会把列表中的元素写入到csv文件中。

    import csv
    
    ll = [[1, 2, 3, 4],
          [1, 2, 3, 4],
          [5, 6, 7, 8],
          [5, 6, 7, 8]]
    
    with open('example1.csv', 'w', newline='') as csv_file:
        # csv_write csv写入对象
        csv_write = csv.writer(csv_file,delimiter=',')
        """
        delimiter=',' 分割符,默认就是逗号
        """
        for l in ll:
            csv_write.writerow(l) # 按行写入
    

    可能遇到的问题:直接使用这种写法会导致文件每一行后面会多一个空行。使用 newline='' 解决

    使用 open 直接写入

     with open('example2.csv', 'w') as csvfile:
        """
        delimiter: 分割符
        """
        for l in ll:
            csvfile.write(",".join(map(str, l)))
            csvfile.write('
    ')
    

    注意:

    当用writer写数据时, None 会被写成空字符串,浮点类型会被调用 repr() 方法转化成字符串。所以非字符串类型的数据会被 str() 成字符串存储。所以当涉及到 unicode 字符串时,可以自己手动编码后存储或者使用csv提供的 UnicodeWriter

    2 读取文件

    • 通过 csv_read 对象读取数据

      import csv
      
      with open('example.csv', encoding='utf-8') as f:
          csv_reader = csv.reader(f)
          for row in csv_reader:
              print(row) # 返回一个列表,列表中的每个元素都是单元格的值
      

    3. 写入字典

    csv 还提供了一种类似于字典方式的写,方式如下:

    class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
    

    举个栗子:

    import csv
    
    with open('names.csv', 'w',encoding='utf-8') as csvfile:
        
        # 键有什么作用(键不能少,数据里面的字典可以少)
        fieldnames = ['first_name', 'last_name']
        
        # 创建一个写入对象,(csvfile="文件对象", fieldnames="表头")
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    	
        # 写入表头
        writer.writeheader()
        
        # 通过字典写入数据,key若不存在写入空
        writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
        writer.writerow({'first_name': 'Lovely'})
        writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
    

    4. 读取字典

    直接看代码:

    import csv
    
    with open('names.csv', 'r', newline="", encoding='utf-8') as f:
        
    	# 实例化一个读对象
        csv_dict_read = csv.DictReader(f)
        
        # 通过循环对象读取数据
        for item in csv_dict_read:
            
            # 通过字典['key']取值
            print(item['first_name'], item['last_name'])
            # item是一个有序字典
            print(item, item['last_name'])
    
  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/xcymn/p/12943116.html
Copyright © 2011-2022 走看看