• Python 操作csv和excel表格


    1. 操作csv表格

    使用的库 csv

    1. csv文件里读取数据

    代码

    1. 以列表形式打开

    import csv
    
    f = open('csv_test.csv', 'r')       # 打开csv文件
    csv_reader = csv.reader(f)          # 将打开的文件装换成csv可读的对象
    for each in csv_reader:             # 打印,结果是个列表
        print(each)
    f.close()
    

    结果

    ['name', 'age', 'score']
    ['张三', '18', '100']
    ['王二', '17', '98']
    ['麻子', '20', '99']
    

    2.以字典形式打开

    import csv
    
    f = open('csv_test.csv', 'r')       # 打开csv文件
    csv_reader = csv.DictReader(f)          # 将打开的文件装换成csv可读的对象,注意是DictReader()
    for each in csv_reader:
        print(each['name'])
    f.close()
    

    结果

    张三
    王二
    麻子
    

    说明

    不能直接print(csv_reader) 结果为

    <_csv.reader object at 0x7f67f2328198>(第一种)

    <csv.DictReader object at 0x7f29ef0a4710>(第二种)

    以字典形式打开会将表头作为字典的key,而其余的每一行会成为字典的value

    2. 将数据写进csv文件

    代码

    1.以列表的方式

    import csv
    
    contents = [['id', 'name', 'hobby'],
                ['001', '老王', 'Java'],
                ['002','老胡','Python'],
                ['003','老李','PHP']]
    
    with open('csv_test2.csv', 'a', newline='') as f:
        csv_writer = csv.writer(f)
        for each in contents:
            csv_writer.writerow(each)
    

    结果

    id name hobby
    1 老王 Java
    2 老胡 Python
    3 老李 PHP

    2.以字典的方式

    import csv
    
    header = ['id', 'name', 'hobby']
    contents = [{'id':'1','name':'老王','hobby':'Java'},
                {'id':'2','name':'老胡','hobby':'Python'},
                {'id':'3','name':'老李','hobby':'PHP'}]
    
    with open('csv_test4.csv', 'a', newline='') as f:
        csv_writer = csv.DictWriter(f, header)
        csv_writer.writeheader()
        for each in contents:
            csv_writer.writerow(each)
    

    结果

    id name hobby
    1 老王 Java
    2 老胡 Python
    3 老李 PHP

    说明

    打开新的文件时需要newline='',否则会产生空行

    上面的代码也可以用csv_writer.writerows(contents)实现(两种均可)

    以字典形式写入时必须先写头具体操作见代码


    2. 操作excel表格

    使用的库 xlrd(读), xlwt(写)

    1. 从excel文件里读取数据

    import xlrd
    
    book = xlrd.open_workbook('excel_test1.xls') # 打开excel文件
    sheet_1 = book.sheets()[0]  # 打开第一张表
    
    num_rows = sheet_1.nrows    # 获取当前表的所有的行数
    num_cols = sheet_1.ncols    # 获取当前表的所有的列数
    
    # 遍历行, 会将每一行以列表的形式输出
    for row in range(num_rows):
        row_values = sheet_1.row_values(row)    # 使用的函数是row_values()
        print(row_values)
    
    # 遍历列, 会将每一列以列表的形式输出
    for col in range(num_cols):
        col_values = sheet_1.col_values(col)    # 使用的函数是col_values()
        print(col_values)
    
    # 遍历单元格, 从上到下从左到右输出每一个单元格的内容
    for row in range(num_rows):
        for col in range(num_cols):
            cell_value = sheet_1.cell_value(row, col)   # 使用的函数是cell_value()
            print(cell_value)
    

    说明

    主要函数,属性

    book = xlrd.open_workbook('excel_test1.xls') # 打开excel文件
    sheet_1 = book.sheets()[0] # 打开第一张表

    num_rows = sheet_1.nrows # 获取当前表的所有的行数
    num_cols = sheet_1.ncols # 获取当前表的所有的列数

    row_values = sheet_1.row_values(row) # 使用的函数是row_values()

    col_values = sheet_1.col_values(col) # 使用的函数是col_values()

    cell_value = sheet_1.cell_value(row, col) # 使用的函数是cell_value()

    注意xlrd不可以改动excel文件

    2. 将数据写进excel文件中

    import xlwt
    
    # 创建Workbook对象
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    
    '''
    Workbook类初始化时有encoding和style_compression参数
    encoding='utf-8',为输入中文
    style_compression,表示是否压缩
    '''
    
    # 添加表格
    sheet = book.add_sheet('sheet1', cell_overwrite_ok=True)
    
    '''
    sheet1为表格的名称
    cell_overwrite_ok,表示是否可以覆盖单元格
    '''
    
    # 向表sheet1中添加数据
    sheet.write(0, 0, 'id')  # 前两个参数为单元格坐标,这里表示第一行第一列(从0开始),后面为内容
    sheet.write(0,1, 'name')
    sheet.write(1,0, '1')
    sheet.write(1,1, '老胡')
    
    
    # 保存到指定的Excel文件中
    book.save('excel_test2.xls')
    

    说明

    主要函数

    book = xlwt.Workbook(encoding='utf-8', style_compression=0) # 创建Workbook对象

    sheet = book.add_sheet('sheet1', cell_overwrite_ok=True) # 添加表格

    sheet.write(0, 0, 'id') # 前两个参数为单元格坐标,这里表示第一行第一列(从0开始),后面为内容

    book.save('excel_test2.xls') # 保存文件

  • 相关阅读:
    C# webBrowser模拟登陆填充操作等(写网页注册机之类的时候要用到)
    【FLASH教程】Adobe Flash CS4 官方中下载及安装
    [转载]下载rtmpe协议的视频文件
    SQLite操作的帮助类
    Windows及.NET Framework版本检测工具
    纪念一个曾经的软件产品(六)——快捷方式,联系人,任务管理器
    ASP.net Web API综合示例
    Task及其异常处理的若干事项
    Macbook换硬盘导系统
    【转】 矩阵分解方法及 在推荐系统中的应用
  • 原文地址:https://www.cnblogs.com/kainhuck/p/10097292.html
Copyright © 2020-2023  润新知