一、csv模块读文件
1. csv.reader
–可迭代对象
通过索引获取文档内容
def csv_read():
file = open('./txt/names.csv','r')
reader = csv.reader(file)
head = next(reader)
print(head)
for line in reader:
print('{}:{} -- {}:{}'.format(head[0],line[0],head[1],line[1]))
输出
['first_name', 'last_name']
first_name:Wonderful -- last_name:Spam
first_name:Lovely -- last_name:Spam
first_name:Baked -- last_name:Beans
2. csv.reader
的namedtuple
def csv_read_nametuple():
'''
namedtuple 可通过属性访问
'''
file = open('./txt/names.csv', 'r')
reader = csv.reader(file)
head = next(reader)
print(head)
# 构建一个namedtuple的模板
from collections import namedtuple
Row = namedtuple('Rom',head)
print(Row)
for r in reader:
row = Row(*r)# 读取的csv中每一行的内容,实例化Row模板
# 通过属性访问
print('{}:{} -- {}:{}'.format(head[0],row.first_name,head[1],row.last_name))
输出同上
3. csv.DictReader
以字典的形式读取
- 获取表头
reader.fieldnames
def csv_read_dict():
file = open('./txt/names.csv', 'r')
reader = csv.DictReader(file)
fieldname = reader.fieldnames# 获取表头
for r in reader:
print('{}:{} -- {}:{}'.format(fieldname[0], r['first_name'],
fieldname[1], r['last_name']))
输出同上
二、csv模块写文件
1. 单个属性写入csv.writer
import csv
def csv_write():
fw = open('./txt/charater2number.csv','w',
newline='',
encoding='utf-8')
write = csv.writer(fw)
number = range(65, 70)
char = list(map(chr, number))
for i in range(len(char)):
write.writerow([char[i],number[i]])#
if __name__ == '__main__':
csv_write()
不设置newline
时,默认是\n
3. 元组形式写入csv.Writer
def write_tuple():
file = open('./txt/person information.csv','w',encoding='utf8',newline='')
head = ['ID','Name','Gender']
rows = [
(1,'Amy','F'),
(2,'Tommy','M'),
(3,'Blair','F'),
]
writer = csv.writer(file)
writer.writerow(head)# 写入表头
writer.writerows(rows) # 写入主题内容,接收列表对象
file.close()
2. 字典形式写入csv.DictWriter
写入的单行writer.writerow
和多行writer.writerows
writer.writeheader()# 写入文件头
import csv
def csv_write_rows():
with open('./txt/names.csv', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()# 写入文件头
# 单行写入
# writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
# writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
# writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
# 多行写入
writer.writerows([{'first_name': 'Wonderful', 'last_name': 'Spam'},\
{'first_name': 'Lovely', 'last_name': 'Spam'}, \
{'first_name': 'Baked', 'last_name': 'Beans'}])
if __name__ == '__main__':
csv_write_rows()