python自带csv模块的基本用法

mrmx9个月前 (12-14)python206

写入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': '安全员'}


文章版权归mrmx.vip所有,转载请注明出处。

标签: csvpython