csv
Table of Contents

csv

“CSV”并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:

  1. 纯文本,使用某个字符集,比如ASCIIUnicodeEBCDICGB2312(简体中文环境)等;
  2. 记录组成(典型的是每行一条记录);
  3. 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
  4. 每条记录都有同样的字段序列。

读取

列表方式 reader

reader是一个迭代器,返回为列表

next 方法可以跳过第一行

import csv

with open('example.csv', 'r') as f:
    reader = csv.reader(f) # reader是一个迭代器
    next(reader) # 跳过第一行
    for x in reader:
        print(x)

字典方式 DictReader

DictReader 是一个迭代器,返回为字典

DictReader不会包含标题的数据

import csv

with open('example.csv', 'r') as f:
    reader = csv.DictReader(f) # reader是一个迭代器
    for x in reader:
        print(x)

写入

列表方式 writer

import csv

headers = ['First Name', 'Last Name', 'Country']
values = [
    ('Rick', 'Xu', 'China'),
    ('Barack', 'Obama', 'USA')
]

with open('my.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(values)

字典方式 DictWriter

import csv

headers = ['First Name', 'Last Name', 'Country']
values = [
    {'First Name': 'Rick', 'Last Name': 'Xu', 'Country': 'China'},
    {'First Name': 'Barack', 'Last Name': 'Obama', 'Country': 'USA'}
]

with open('my.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.DictWriter(f, headers)
    writer.writeheader()
    writer.writerows(values)