zoukankan      html  css  js  c++  java
  • python中CSV模块的使用

    Python 的 CSV模块的使用方法,包括,reader, writer, DictReader, DictWriter.register_dialect

    一直非常喜欢python的csv模块,简单易用,经常在项目中使用,现在举几个例子说明一下。

    reader(csvfile[, dialect='excel'][, fmtparam])

    参数表:

    csvfile
            需要是支持迭代(Iterator)的对象,并且每次调用next方法的返回值是字符串(string),通常的文件(file)对象,或者列表(list)对象都是适用的,如果是文件对象,打开是需要加"b"标志参数。

    dialect
            编码风格,默认为excel方式,也就是逗号(,)分隔,另外csv模块也支持excel-tab风格,也就是制表符(tab)分隔。其它的方式需要自己定义,然后可以调用register_dialect方法来注册,以及list_dialects方法来查询已注册的所有编码风格列表。

    fmtparam
            格式化参数,用来覆盖之前dialect对象指定的编码风格。

    例子:

    import csv
    
    reader = (file('your.csv', 'rb'))
    for line in reader:
        print line

    writer(csvfile[, dialect='excel'][, fmtparam])

    参数表(略: 同reader, 见上)

    例子:

    import csv
    
    writer = (file('your.csv', 'wb'))
    (['Column1', 'Column2', 'Column3'])
    lines = [range(3) for i in range(5)]
    for line in lines:
        writer.writerow(line)

    1. 写入并生成csv文件

    代码:

    # coding: utf-8

    import csv

    csvfile = file('csv_test.csv', 'wb')

    writer = csv.writer(csvfile)

    writer.writerow(['姓名', '年龄', '电话'])

    data = [

        ('小河', '25', '1234567'),

        ('小芳', '18', '789456')

    ]

    writer.writerows(data)

    csvfile.close()

    • wb中的w表示写入模式,b是文件模式

    • 写入一行用writerow

    • 多行用writerows

    2. 读取csv文件

    代码:

    # coding: utf-8

    import csv

    csvfile = file('csv_test.csv', 'rb')

    reader = csv.reader(csvfile)

    for line in reader:

        print line

    csvfile.close() 

    运行结果:

    root@he-desktop:~/python/example# python read_csv.py 

    ['xe5xa7x93xe5x90x8d', 'xe5xb9xb4xe9xbex84', 'xe7x94xb5xe8xafx9d']

    ['xe5xb0x8fxe6xb2xb3', '25', '1234567']

    ['xe5xb0x8fxe8x8axb3', '18', '789456']

    打印发行日期及标题,逐行处理:

    1
    2
    3
    for line in open("samples/sample.csv"):
      title, year, director = line.split(",")
      print year, title

    使用csv模块处理:

    1
    2
    3
    4
    import csv
    reader = csv.reader(open("samples/sample.csv"))
    for title, year, director in reader:
      print year, title

    改变分隔符

    创建一csv.excel的子类,并修改分隔符为”;”

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # File: csv-example-2.py
    import csv
    class SKV(csv.excel):
      # like excel, but uses semicolons
      delimiter = ";"
      
    csv.register_dialect("SKV", SKV)
    reader = csv.reader(open("samples/sample.skv"), "SKV")
    for title, year, director in reader:
      print year, title

    如果仅仅仅是改变一两个参数,则可以直接在reader参数中设置,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    # File: csv-example-3.py
      
    import csv
      
    reader = csv.reader(open("samples/sample.skv"), delimiter=";")
      
    for title, year, director in reader:
      print year, title

    将数据存为CSV格式

    通过csv.writer来生成一csv文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # File: csv-example-4.py
      
    import csv
    import sys
      
    data = [
      ("And Now For Something Completely Different"1971"Ian MacNaughton"),
      ("Monty Python And The Holy Grail"1975"Terry Gilliam, Terry Jones"),
      ("Monty Python's Life Of Brian"1979"Terry Jones"),
      ("Monty Python Live At The Hollywood Bowl"1982"Terry Hughes"),
      ("Monty Python's The Meaning Of Life"1983"Terry Jones")
    ]
      
    writer = csv.writer(sys.stdout)
      
    for item in data:
      writer.writerow(item)
     
  • 相关阅读:
    算法与数据结构 (四) 排序 一 交换类排序
    算法与数据结构 (三) 二叉树的简单应用 二叉查找树,二叉堆排序
    算法与数据结构 (二) 二叉树的简单实现,非递归的前序遍历 中序遍历 后序遍历
    算法与数据结构 (一) 链表,栈,队列的简单实现
    服务器端的redis和MySQL的远程连接的简单解决方案
    记一次自定义监听器使用spring 管理的bean的问题
    基于java开发的RBAC模型权限管理系统
    2019 本科java开发春招面经(实习)
    记一次Bootstrap框架下 使用Ajax失效的问题
    [转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱
  • 原文地址:https://www.cnblogs.com/banhulaojiu/p/9705995.html
Copyright © 2011-2022 走看看