• Python课程笔记(九)


    本次课程主要学习了Excel和JSON格式的一些读写操作。课程代码

    一、Excel数据读写操作

    1、安装模块

    pip install xlrd
    pip install xlwt 
    网不好可以采用三方库:
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名
    

    2、读取数据

    (1)导入xlrd模块

    import xlrd
    

    (2)打开Excel文件读写数据,创建文件对象赋值给workfile:

    workbook = xlrd.open_workbook(r'd:\demo1.xlsx')
    

    (3)获取工作表,创建表格对象table有三种方法:

    table = workbook.sheet_names()   #获取所有工作表
    table = workfile.sheet_by_index(0)   #通过索引顺序获取
    table = workfile.sheet_by_name('Sheet1')   #通过名称获取
    

    (4)获取行数和列数

    nrows = table.nrows   #获取工作表行数
    ncols = table.nclos   #获取工作表列数
    

    (5)获取指定单元格的数据,注意行和列的索引值都是从0开始

    cell_A1 = table.cell(0,0).value   #获取A1位置的数据
    cell_C1 = table.cell(2,3).value   #获取C4位置的数据
    

    一个读取demo:

    # 导入xlwt模块
    
    import xlrd
    
    
    def read_excel():
        # 打开文件
        workbook = xlrd.open_workbook(r'F:HelloWorld10TenthClass\demo1.xls')
        # 获取所有sheet
        print("
    共有如下几个数据表:
    ")
        print(workbook.sheet_names())
        sheet2_name = workbook.sheet_names()[1]
    
        # 根据sheet索引或者名称获取sheet内容
        sheet2 = workbook.sheet_by_index(1)  # sheet索引从0开始
        sheet2 = workbook.sheet_by_name('Sheet2')
    
        # sheet的名称,行数,列数
        print("
    shee2共有行、列数:
    ")
        print(sheet2.name, sheet2.nrows, sheet2.ncols)
    
        # 获取整行和整列的值(数组)
        rows = sheet2.row_values(2)  # 获取第3行内容
        cols = sheet2.col_values(1)  # 获取第2列内容
        print("
    shee2第3行的内容:")
        print(rows)
        print("
    shee2第2列的内容:")
        print(cols)
    
        # 获取单元格内容
        print("
    三种方法获取shee2第2行第1列的内容:")
        print(sheet2.cell(1, 0).value)
        print(sheet2.cell_value(1, 0))
        print(sheet2.row(1)[0].value)
    
        # 获取单元格内容的数据类型
        print("
    shee2第2行第1列的数据类型为:")
        print(sheet2.cell(1, 0).ctype)
    
    
    if __name__ == '__main__':
        read_excel()
    

    3、写入数据

    (1)导入xlwt模块

    import xlwt
    

    (2)新建一个excel文件

    file = xlwt.Workbook()   #注意Workbook首字母大写
    

    (3)新建一个sheet工作表

    table = file.add_sheet('sheet name')
    

    (4)写入数据table.write(行,列,value)

    table.write(0,0,'test')
    

    (5)保存文件

    file.save('Excel_Test.xls')
    

    一个写入demo:

    import xlwt
    
    wbk = xlwt.Workbook()
    sheet = wbk.add_sheet('MySheet1')
    sheet.write(0,1,'111')
    sheet.write(1,1,'222')
    sheet.write(5,5,'我们正在学习文件操作') # 从0开始索引,在表格中会显示在(F,6)
    wbk.save('Excel_Test.xls')   #默认保存在与程序同文件夹下 
    

    二、字典

    Python字典是包含多个元素的一种可变数据类型。其元素由“键:值”对组成,即每个元素包含“”和“”两部分。

    1、字典的定义

    用大括号"{}"把元素括起来构成一个字典对象。字典中的元素用“字典名[键名]”表示。

    D = {'ID':1001, 'name':'张三', 'age':23}
    print(D)
    print(D['ID'])
    print(D['name'])
    print(D['age'])
    

    2、字典的操作

    (1)字典元素的修改

    uil = {'name':'http', 'port':80}
    uil['name'] = 'ftp'
    uil['port'] = 90
    print(uil)
    

    (2)字典元素的添加

    D = {'ID':1001, 'name':'张三', 'age':23}
    print(D)
    print(D['ID'])
    print(D['name'])
    print(D['age'])
    D['sex'] = '男'
    print(D)
    

    三、JSON格式

    1、JSON数据

    JSON数据值可以是一个简单的字符串(String)、数值(Number)、布尔值(Boolean),也可以是一个数组或一个复杂的Object对象。

    • JSON的字符串需要用单引号或双引号括起来
    • JSON数值可以是整数或浮点数
    • JSON的布尔值为true或false
    • JSON的数组用方括号括起来
    • JSON的Object对象用花括号括起来

    2、表示数据(简洁高效)

    (1)、用键-值对表示数据

    JSON数据书写格式:键名{key}:值{value}

    key必须是字符串 : value可以是字符串、数值、布尔值

    'firstName':'John'
    

    (2)、JSON对象

    JSON对象可以包含多个键-值对,要求在花括号“{}”中书写

    {'firstName':'John' ,'lastName':'Doe' ,'age':20}
    

    当然,JSON对象的值也可以是另一个对象。

    {
    'Name':'Jack',
    'age':20,
    'friend':{'Name':'Tom','age':18}
    }
    

    (3)、JSON数组

    直接看一组案例:

    students=[
    	{'sid':001,'name':'张三'},
    	{'sid':002,'name':'李四'},
    	{'sid':003,'name':'王五'},
    ]
    
    访问:
    students[0].name;
    修改:
    students[0].name='张一山';
    

    (4)、JSON文件

    保存文件,文件类型为“.json”

    3、JSON模块

    JSON模块是Python标准库所提供的,对JSON数据进行解析,将JSON格式数据与Python标准数据类型相互转换。

    python数据类型 JSON格式数据
    dict object
    list array
    str string
    None null

    (1)导入模块

    import json
    

    (2)编码与解码

    主要方法:

    编码:json.dumps(obj) 将JSON对象obj转成成Python的数据类型

    解码:json.loads(str) 将Python数据类型转换回JSON对象

    json.dump()把数据写入文件write中,json.load()把文件中的数据读取read出来。

    4、读取JSON文件

    读取一组数据:

    import json
    
    data = {
        'name' : 'zhangdasan',
        'age' : 21,
        'email' : 'zdsan@163.com'
    }
    
    with open('test.json', 'w') as f:
    	json.dump(data, f)
    	print('成功写入数据到文件!
    ')
    	f.close()
    
    with open('test.json', encoding='utf-8') as f:
        line = f.readline()
        d = json.loads(line)
        name = d['name']
        age = d['age']
        email = d['email']
        print(name, age, email)
        f.close()
    

    读取多组数据:

    import json
    
    
    data = [
    {"sid":"a1001","name":"zhangdasan","age": 21},
    {"sid":"a1002","name":"lixianli","age": 20},
    {"sid":"a1003","name":"zhaozhijian","age": 22},
    ]
    
    f1 = open('test.json', 'w')
    json.dump(data, f1)
    print('成功写入数据到文件!
    ')
    f1.close()
    
    f2 = open('test.json', encoding='utf-8')
    line = f2.readline()
    d = json.loads(line)
    print(d)
    for i in d:
        sid = i['sid']
        name = i['name']
        age = i['age']
        print(sid,name, age)
    f2.close()
    

    5、一道作业题

    作业:
    将你和2位同学的姓名、专业、年龄、籍贯用json格式表示,
    并且保存为stu.json磁盘文件,还要读出这3条内容。

    import json
    
    
    data = [
    {"name":"王哲铭","age":20,"profession":"信息工程","hometown":"湖北"},
    {"name":"杨幂","age":18,"profession":"表演艺术","hometown":"北京"},
    {"name":"杨超越","age":18,"profession":"音乐创作","hometown":"江苏"},
    ]
    f1 = open('stu.json', 'w')
    json.dump(data, f1)
    print('成功写入数据到文件!
    ')
    f1.close()
    
    f2 = open('stu.json', encoding='utf-8')
    line = f2.readline()
    d = json.loads(line)
    print(d)
    for i in d:
        name = i['name']
        age = i['age']
        profession = i['profession']
        hometown = i['hometown']
        print(name, age, profession, hometown)
    f2.close()
    

  • 相关阅读:
    通用人工智能离我们还有多远?
    自动化机器上的物联网网关的目的是什么?
    提效降本,您不可不知道的云架构秘诀
    “影子物联网”:日益增长的企业安全盲区
    查找练习 hash——出现过的数字
    查找练习 hash——出现过的数字
    数据结构上机实验之二分查找
    数据结构上机实验之二分查找
    简单字符串比较
    简单字符串比较
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/12758890.html
Copyright © 2020-2023  润新知