2021.3.19 json和csv表格文件

01二进制和字符串之间的相互转换

  1. 字符串(str)转二进制(byres)

    字符串转二进制

    • 1 ) 将字符串数据转换成二进制数据
    str1 = 'abc'
    b_str1 = b'abc'
    print(type(str1), type(b_str1))     # <class 'str'> <class 'bytes'>
    
    • 2 ) bytes(字符串)
    str2 = 'hello'
    result = bytes(str2, encoding='utf-8')
    print(type(result))     # <class 'bytes'>
    
    • 3 ) 字符串.encode(encoding=‘utf-8’)
    str3 = 'python数据'
    result = str3.encode()
    print(type(result))    # <class 'bytes'>
    

    二进制转字符串

    • 1)类型转换: str(二进制, encoding=‘utf-8’)
    b1 = b'123abc;'
    print(b1)      # b'123abc'
    print(str(result, encoding='utf-8'))      # '123abc'
    
    • 2) 二进制.decode(encoding=‘utf-8’)
    result = result.decode()
    print(result)
    

02 json 数据

系统模块json中提供所有json和python之间相互转换的相关函数

import json
import requests
  1. 什么是json

    json是一种用来进行传输的通用的数据格式中的一种(另外一种是xml)。

    这种数据格式的数据在网络传输的时候最大的优势就是小(速度快)

  2. json数据格式

    1)格式要求:一个json有且只能有一个数据;这个唯一的数据必须是json支持类型的数据。
    2)json支持的数据类型对应的数据
    数字类型    -   直接写,例如:10012.5-23.523.83e2 (正数前面不能写+)
    字符串     -    必须使用双引号, 支持转义字符,例如:"name""张三", "abc\n123\u4e00"
    布尔      -     只有 true 和 false两个值
    null      -None功能一样,表示空
    数组      -     和列表一样,[元素1, 元素2, 元素3, ...]
    字典      -     {1:1,2:2,...},键只能是字符串
    
  3. python数据与json数据之间的相互转换

      1. json转python
    """
    a. 转换原则
    json         ->          python
    数字                      int、float
    字符串                     str(可能会将双引号变成单引号)
    布尔                      bool (true -> True;  false -> False)
    null                      None
    数组                      list
    字典                      dict
    
    b.工具:
    json.loads(json格式的字符串: str)    -    将json数据转换成对应的Python数据
    json字符串  - json中的字符串,必须用双引号
    json格式的字符串  -   字符串内容是json数据的字符串
    """
    result = json.loads('123')
    print(result, type(result))
    
    result = json.loads('"abc"')
    print([result], type(result))
    
    result = json.loads('[120, "abc", true, null]')
    print(result)
    
    
    response = requests.get('http://api.tianapi.com/txapi/ncovabroad/index?key=c9d408fefd8ed4081a9079d0d6165d43')
    result = response.text
    # print(type(result), result)
    data = json.loads(result)
    for x in data['newslist']:
        print(x['provinceName'])
    
      1. python转换json
    """
    a. 转换原则
    python          ->          json
    int、float                   数字
    str                         字符串引号会变成双引号
    bool                        True -> true; False -> false
    None                        null
    list、tuple                 数组
    dict                        字典
    
    b.工具:
    json.dumps(python数据)        -       将python转换成json格式的字符串
    """
    result = json.dumps([10, 'abc', True, [1, 2], (10, 20), {'a': 10, 10: 20}])
    print(result)      # '[10, "abc", true, [1, 2], [10, 20], {"a": 10, "10": 20}]'
    
    # result = json.dumps({1, 2})
    

03 csv 文件

  1. 读csv文件中的内容

      1. 打开文件
    • 2)创建reader或者 DictReader
      csv.reader (csv文件对象) -> 返回的是一个迭代器(序列),迭代器中的元素是每一行数据对应的列表

      csv.DictReader (csv文件对象) -> 返回的是一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是第一行的数据
      csv.DictReader (csv文件对象, 指定的key: list) -> 返回的是一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是指定的数据

    def list_reader():
        with open('files/豆瓣电影.csv', encoding='utf-8', newline='') as f:
            # a. 列表的reader
            reader = csv.reader(f)
            print(next(reader))    # ['排名', '电影名称', '评分']
            print('========================================================')
            for x in reader:
                print(x)
    
    
    def dict_reader():
        with open('files/豆瓣电影.csv', encoding='utf-8', newline='') as f:
            # 1)直接使用第一行的数据作为返回的字典的键
            # reader = csv.DictReader(f)
            # print(reader.fieldnames)        # ['排名', '电影名称', '评分']
            # # print(next(reader))    # {'排名': '1', '电影名称': '肖申克的救赎', '评分': '9.7'}
            # for x in reader:
            #     print(x)
    
            # 2)自定义每个数据对应的键
            reader = csv.DictReader(f, ['ranking', 'name', 'score'])
            next(reader)    # 去掉原来的第一行的字段
            for x in reader:
                print(x)
    
  2. csv文件的写操作

    • 打开文件
    • 创建writer
    • 写入数据
def list_writer():
    with open('files/data1.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['商品名', '商品编号', '商品的价格', '商品分类'])
        writer.writerow(['可口可乐', 'g001', 5, '饮料'])
        writer.writerows([
            ['薯片', 'g002', 3.5, '垃圾食品'],
            ['辣条', 'g003', 1, '面食'],
            ['苹果', 'g004', 6, '水果']
        ])


def dict_writer():
    with open('files/data2.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, ['name', 'id', 'price', 'type'])
        # 手动添加第一行的字段
        # writer.writeheader()     # 将设置的字段的值作为第一行内容写入文件中

        writer.writerow({'name': '商品名称', 'id': '商品编号', 'price': '商品价格', 'type': '商品类型'})

        writer.writerow({'name': '面包', 'id': 'g007'})
        writer.writerows([
            {'name': '雪碧', 'id': 'g008', 'price': 3, 'type': '碳酸饮料'},
            {'name': '瓜子', 'id': 'g009'}
        ])

dict_writer()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值