zoukankan      html  css  js  c++  java
  • CSV文件储存

    CSV文件储存

      CSV,全称为 Comma-Separated Vaules,翻译为逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段之间的分隔符是字符串或其他字符,最常见的是逗号或制表符。不过所有记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。它比Excel文件更加简洁,XLS文本是电子表格,它包含了文本、数值、公式和格式等内容,而CSV中不包含这些内容,就是特定字符分隔的纯文本,结构简单清晰。下面用一个简单的实例来介绍CSV:

    import csv
    
    with open('data.csv','w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['id','name','age'])
        writer.writerow(['1001','jonas',18])
        writer.writerow(['1002','jerry',17])
        writer.writerow(['1003','tom',16])

    首先,打开data.csv文件,然后指定打开的模式为w,获得文件句柄,随后调用csv库的writer()方法初始化写入对象,传入该句柄,然后调用writerow()方法传入每行的数据即可完成写入。然后通过文本形式直接打开data.csv会发现,刚才写入的数据都是通过逗号分隔开的,当然,在写入的时候也可以修改这个分隔符:

    import csv
    
    with open('data.csv','w') as csvfile:
        writer = csv.writer(csvfile,delimiter=' ')
        writer.writerow(['id','name','age'])
        writer.writerow(['1001','jonas',18])
        writer.writerow(['1002','jerry',17])
        writer.writerow(['1003','tom',16])

    上面这里指定空格为分隔符。另外,还可以通过调用writerows()方法同时写入多行,此时参数就需要为二维列表:

    import csv
    
    with open('data.csv','w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['id','name','age'])
        writer.writerows([['1001','jonas',18],['1002','jerry',17],['1003','tom',16]])

    除此以外,csv库还提供了字典的写入方式:

    import csv
    
    with open('data.csv','w') as csvfile:
        fieldnames = ['id','name','age']
        writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow({'id':1001,'name':'jonas','age':18})
        writer.writerow({'id':1002,'name':'jerry','age':20})

    先定义3个字段,用fieldnames表示,然后将其传给DictWriter来初始化一个字典写入对象,接着可以调用writeheader()方法先写入头信息,然后再调用writerow()方法传入相应字典。

    除了上面介绍的写入信息,还可以通过csv库来读取.csv的文件:

    import csv
    
    with open('data.csv','r',encoding='utf-8') as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            print(row)

    通过遍历输出的每行结果都是一个列表。

  • 相关阅读:
    Java实现 LeetCode 371 两整数之和
    Java实现 LeetCode 371 两整数之和
    Java实现 LeetCode 371 两整数之和
    Java实现 LeetCode 1013 将数组分成和相等的三个部分
    Java实现 LeetCode 1013 将数组分成和相等的三个部分
    Java实现 LeetCode 1013 将数组分成和相等的三个部分
    Java实现蓝桥杯VIP算法训练 纪念品分组
    Java实现蓝桥杯VIP算法训练 纪念品分组
    linux下syscall函数,SYS_gettid,SYS_tgkill
    可变参数宏__VA_ARGS__和...
  • 原文地址:https://www.cnblogs.com/jonas-von/p/9192813.html
Copyright © 2011-2022 走看看