zoukankan      html  css  js  c++  java
  • 将str文本类型转换为dict

    ---for test---

    1. 往文件写如内容:
       1 f = open("mall.txt",'w+',encoding='utf-8')
       2 goods = {
       3     '电子产品':[
       4         ['mac',7500,7],
       5         ['iphone7',5400,5],
       6         ['thunder',7600,3]
       7     ],
       8     '母婴用品':[
       9         ['帮宝适',45.9,50],
      10         ['美素佳儿',380,10]
      11     ],
      12     '摩托汽车':[
      13         ['特斯拉',820000,2],
      14         ['雷克萨斯Rx450',450000,5]
      15     ],
      16     '日常用品':[
      17         ['东北大米',38.5,20],
      18         ['上海青',3.6,47]
      19     ]
      20 }
      21 s = str(goods)
      22 f.write(s)
      23 f.close()
      View Code
    2. 从文件中读取内容:
      1 with open("mall.txt",'r',encoding="utf-8") as f:
      2     k = f.read()
      3     f.close()
      4 print(k)
      View Code
    3. 如何将读取到的type为str的类dict内容转换回dict类型呢!

        一、用eval函数:

    1 s = eval(k)
    2 
    3 print(type(s))
    4 for i in s:
    5     print(i,s[i])
    View Code

        二、用json函数:(但是必须注意的是,json格式要求的是双引号,单引号的话会报错【选中单引号 --> ctrl + shift + alt + j  --> 替换单引号为双引号】)

          

    1 print(json.loads(goods))
    View Code

          如果是单引号报错内容:

    1  print(json.loads(k))
    2   File "F:Python35libjson\__init__.py", line 319, in loads
    3     return _default_decoder.decode(s)
    4   File "F:Python35libjsondecoder.py", line 339, in decode
    5     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    6   File "F:Python35libjsondecoder.py", line 355, in raw_decode
    7     obj, end = self.scan_once(s, idx)
    8 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    View Code

    ---恢复内容结束---

    for test :

    1. 往文件写如内容:
       1 f = open("mall.txt",'w+',encoding='utf-8')
       2 goods = {
       3     '电子产品':[
       4         ['mac',7500,7],
       5         ['iphone7',5400,5],
       6         ['thunder',7600,3]
       7     ],
       8     '母婴用品':[
       9         ['帮宝适',45.9,50],
      10         ['美素佳儿',380,10]
      11     ],
      12     '摩托汽车':[
      13         ['特斯拉',820000,2],
      14         ['雷克萨斯Rx450',450000,5]
      15     ],
      16     '日常用品':[
      17         ['东北大米',38.5,20],
      18         ['上海青',3.6,47]
      19     ]
      20 }
      21 s = str(goods)
      22 f.write(s)
      23 f.close()
      View Code
    2. 从文件中读取内容:
      1 with open("mall.txt",'r',encoding="utf-8") as f:
      2     k = f.read()
      3     f.close()
      4 print(k)
      View Code
    3. 如何将读取到的type为str的类dict内容转换回dict类型呢!

        一、用eval函数:

    1 s = eval(k)
    2 
    3 print(type(s))
    4 for i in s:
    5     print(i,s[i])
    View Code

        二、用json函数:(但是必须注意的是,json格式要求的是双引号,单引号的话会报错【选中单引号 --> ctrl + shift + alt + j  --> 替换单引号为双引号】)

          

    1 print(json.loads(goods))
    View Code

          如果是单引号报错内容:

    1  print(json.loads(k))
    2   File "F:Python35libjson\__init__.py", line 319, in loads
    3     return _default_decoder.decode(s)
    4   File "F:Python35libjsondecoder.py", line 339, in decode
    5     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    6   File "F:Python35libjsondecoder.py", line 355, in raw_decode
    7     obj, end = self.scan_once(s, idx)
    8 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    View Code

    而字典转成列表就仅仅一个items方法就可以:

    > goods = {"apple":2,"ipad pro":18}
    > goods.items()
    dict_items([('ipad pro', 18), ('apple', 18)])
  • 相关阅读:
    大话设计模式读书笔记(七) 原型模式
    大话设计模式读书 笔记(六) 工厂方法模式
    知识点:什么是交换机?什么是路由?什么是静态路由和动态路由?
    Docker:PostgreSQL-11配置数据持久化
    Docker:docker创建容器时报错:WARNING: IPv4 forwarding is disabled. Networking will not work.
    Docker:docker安装部署jenkins
    Docker:Centos7更新yum源下载docker
    Docker:docker国内镜像加速
    SpringBoot:SpringCloud与SpringBoot兼容版本参(其它组件兼容情况)
    SpringCloud:SpringBoot整合SpringCloud项目
  • 原文地址:https://www.cnblogs.com/mologa-jie/p/6900524.html
Copyright © 2011-2022 走看看