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'])
    
  • 相关阅读:
    jquery 实现可编辑div
    【ubuntu firefox】 Firefox is already running, but is not responding
    PO标准form的一点疑问
    hdu3488Tour KM算法
    经典算法学习——归并排序
    Linux 安装Redis全过程日志
    算法竞赛入门经典 习题 2-10 排列(permutation)
    每日一支TED——弗兰斯·兰庭:为动物发声的摄影作品——2015年6月3日
    Linux用户密码策略
    chage命令
  • 原文地址:https://www.cnblogs.com/xcymn/p/12943116.html
Copyright © 2011-2022 走看看