二进制和字符串之间的互相转换 及 json文件和csv文件

二进制和字符串之间的互相转换 及 json文件和csv文件

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

    1. 字符串转二进制

      1. 将字符串数据转换成二进制数据

        str1 = 'abc'
        b_str1 = b'abc'     # 在字符串引号前面加b
        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'>
        
    2. 二进制转字符串

      1. 类型转换: str(二进制, encoding='utf-8')

        b1 = b'123abc'
        print(b1)      # b'123abc'
        print(str(result, encoding='utf-8'))      # '123abc'
        
      2. 二进制.decode(encoding='utf-8')

        str3 = 'python数据'
        result = str3.encode()  #转换成二进制  b'python数据'
        
        result = result.decode() # 转换成字符串
        print(result) 
        
  2. json和csv数据文件

    1. json文件数据

      1. 需引入系统模块jsonrequests

        # 需要引入系统模块
        # 系统模块json中提供所有json和python之间相互转换的相关函数
        import json
        import requests
        
      2. 什么是json

        # json是一种用来进行传输的通用的数据格式中的一种(另外一种是xml)。
        # 这种数据格式的数据在网络传输的时候最大的优势就是小(速度快)
        
      3. json数据格式

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

        2. json转python(json.loads(json格式的字符串:str))

          """
          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数据的字符串
          """
          
          # 系统模块json中提供所有json和python之间相互转换的相关函数
          import json
          import requests
          
          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)
          
          requests.get('http://api.tianapi.com/txapi/ncovabroad/index?key=c9d408fefd8ed4081a9079d0d6165d43')
          result = response.text
          # result = response.json 这里可以直接.json,直接是python类型的
          
          data = json.loads(result)
          for x in data['newslist']:
              print(x['provinceName'])
          
        3. python转json(json.dumps(python数据))

          """
          a. 转换原则
          python          ->          json
          int、float                   数字
          str                         字符串引号会变成双引号
          bool                        True -> true; False -> false
          None                        null
          list、tuple                 数组
          dict                        字典
          
          b.工具:
          json.dumps(python数据)        -       将python转换成json格式的字符串
          """
          
          # 系统模块json中提供所有json和python之间相互转换的相关函数
          import json
          import requests
          
          
          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})
          
    2. csv文件(需引入系统模块csv)

      1. 读csv文件中的内容

        import csv  # 引入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文件的写操作

        """
        1) 打开文件
        2) 创建writer
        3) 写入数据
        """
        
        
        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()
        
        
Python中,可以通过使用不同的模式来处理不同的文件格式。进制文件是一种文件格式,其中数据以字节的形式存储,而其他格式(如文本文件CSV文件JSON文件等)则以特定的结构和编码方式存储数据。 以下是关于Python二进制文件和其他格式的一些讨论: 1. 二进制文件二进制文件是以字节为单位存储数据的文件。它们通常用于存储非文本数据,如图像、音频、视频等。在处理二进制文件时,可以使用 `'rb'`(读取二进制)模式打开文件,并使用字节操作来读取和写入数据。 2. 文本文件:文本文件是以字符形式存储数据的文件。它们通常用于存储文本数据,如普通文本文件、配置文件等。在处理文本文件时,可以使用 `'r'`(读取文本)或 `'w'`(写入文本)模式打开文件,并使用字符串操作来读取和写入数据。Python提供了许多用于处理文本文件的内置函数和方法。 3. CSV文件CSV(逗号分隔值)文件是一种常见的用途是存储表格数据的格式。它们使用逗号或其他分隔符来分隔不同的字段,并可以使用纯文本编辑器进行编辑。Python中有许多库(如`csv`模块)可用于读取和写入CSV文件,使数据的处理更加方便。 4. JSON文件JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于存储和传输结构化数据。Python提供了`json`模块,可以轻松地将数据转换JSON格式,并从JSON文件中读取和解析数据。 需要注意的是,二进制文件和其他格式之间的主要区别在于存储和表示数据的方式。根据不同的需求和文件类型,选择适当的文件处理方式是很重要的,这样可以更好地处理和操作数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值