python自带csv模块的基本用法
写入csv文件
使用csv.writer()
import csv datas =[['程旭', '14751975490', '湖南省六安市淄川韩路G座 993579', '430682193801265705', '明腾传媒有限公司', '营运经理'], ['郁丽丽', '18224913863', '广西壮族自治区广州县南溪呼和浩特街T座 142472', '621001193509243897', '飞利信传媒有限公司', '药库主任/药剂师'], ['唐博', '13364713003', '吉林省兰州县龙潭蔡街U座 649442', '520603198808294807', '创汇传媒有限公司', '售前/售后技术支持主管']] with open('staff.csv','w',newline='',encoding='utf8') as csvfile: writer = csv.writer(csvfile) writer.writerows(datas)
writer.writerows()和writerow()分别可写入多行和单行。
使用csv.DictWriter()
with open('name.csv','w',newline='',encoding='utf8') as csvfile: fieldnames = ['first_name','last_name'] # 指定字段名 writer = csv.DictWriter(csvfile, fieldnames=fieldnames,extrasaction='ignore') writer.writeheader() # 写入字段名 writer.writerow({'first_name':'Bake','last_name':'Beans'}) # 单行 writer.writerows([{'first_name':'Bake','last_name':'Beans'}, {'first_name':'Tom','last_name':'Jerry'} ]) # 多行
读取csv文件
使用csv.reader()
import csv with open('staff.csv',newline='',encoding='utf8') as csvfile: reader = csv.reader(csvfile) for row in reader: print(row) # 输出如下: # ['程旭', '14751975490', '湖南省六安市淄川韩路G座 993579', '430682193801265705', '明腾传媒有限公司', '营运经理'] # ['郁丽丽', '18224913863', '广西壮族自治区广州县南溪呼和浩特街T座 142472', '621001193509243897', '飞利信传媒有限公司', '药库主任/药剂师'] # ['唐博', '13364713003', '吉林省兰州县龙潭蔡街U座 649442', '520603198808294807', '创汇传媒有限公司', '售前/售后技术支持主管']
使用csv.DictReader()
csv.DictReader()是一个类,实例化的对象操作上与常规的reader类似,但是将每行的信息映射到一个dict(字典),字典的键由fieldnames参数(可选)给出。如果不给出fieldnames参数,则文件的第一行将被用作字段名,成为字典的键。
读取带字段名的csv文件:
staffs_with_fieldname.csv的内容如下: 姓名,手机,地址,身份证号,公司,职务 张雷,15633613039,吉林省晶县西夏贺街d座 664670,44098120000501546X,鑫博腾飞传媒有限公司,项目总监 李婷婷,15053488870,湖北省兴安盟市白云周路M座 996577,620825194406059614,菊风公司网络有限公司,石油天然气技术人员 魏佳,13031399464,江苏省瑞市牧野南昌街h座 880217,150526198310181936,创亿网络有限公司,安全员
# csv.DictReader()读取带字段名的csv文件 with open('staffs_with_fieldname.csv',newline='',encoding='utf8') as csvfile: reader = csv.DictReader(csvfile) # 文件带字段名,此处不给fieldnames参数 for row in reader: print(row)
输出如下:
{'姓名': '张雷', '手机': '15633613039', '地址': '吉林省晶县西夏贺街d座 664670', '身份证号': '44098120000501546X', '公司': '鑫博腾飞传媒有限公司', '职务': '项目总监'} {'姓名': '李婷婷', '手机': '15053488870', '地址': '湖北省兴安盟市白云周路M座 996577', '身份证号': '620825194406059614', '公司': '菊风公司网络有限公司', '职务': '石油天然气技术人员'} {'姓名': '魏佳', '手机': '13031399464', '地址': '江苏省瑞市牧野南昌街h座 880217', '身份证号': '150526198310181936', '公司': '创亿网络有限公司', '职务': '安全员'}
读取不带字段名的csv文件:
staffs_without_fieldname.csv的内容如下: 张雷,15633613039,吉林省晶县西夏贺街d座 664670,44098120000501546X,鑫博腾飞传媒有限公司,项目总监 李婷婷,15053488870,湖北省兴安盟市白云周路M座 996577,620825194406059614,菊风公司网络有限公司,石油天然气技术人员 魏佳,13031399464,江苏省瑞市牧野南昌街h座 880217,150526198310181936,创亿网络有限公司,安全员
# csv.DictReader()读取不带字段名的csv文件 with open('staffs_without_fieldname.csv',newline='',encoding='utf8') as csvfile: fieldname = ['name','phone','address','id_number','company','job'] reader = csv.DictReader(csvfile,fieldnames=fieldname) # 文件不带字段名,此处给fieldnames参数 for row in reader: print(row)
输出如下:
{'name': '张雷', 'phone': '15633613039', 'address': '吉林省晶县西夏贺街d座 664670', 'id_number': '44098120000501546X', 'company': '鑫博腾飞传媒有限公司', 'job': '项目总监'} {'name': '李婷婷', 'phone': '15053488870', 'address': '湖北省兴安盟市白云周路M座 996577', 'id_number': '620825194406059614', 'company': '菊风公司网络有限公司', 'job': '石油天然气技术人员'} {'name': '魏佳', 'phone': '13031399464', 'address': '江苏省瑞市牧野南昌街h座 880217', 'id_number': '150526198310181936', 'company': '创亿网络有限公司', 'job': '安全员'}