python字符串转字典

举报
时光不写 发表于 2022/02/22 19:18:10 2022/02/22
【摘要】 方法一最常见的一种,使用json进行转换import jsons = {"name": "张三"}print(json.loads(s))------{'name': '张三'}但是这种方式有可能会出现问题,例如单引号的情况s = "{'name': '张三'}"print(json.loads(s))------Traceback (most recent call last): Fi...

方法一

  • 最常见的一种,使用json进行转换

    import json
    s = {"name": "张三"}
    print(json.loads(s))
    ------
    
    {'name': '张三'}
    
  • 但是这种方式有可能会出现问题,例如单引号的情况

    s = "{'name': '张三'}"
    print(json.loads(s))
    ------
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 348, in loads
        return _default_decoder.decode(s)
      File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 353, in raw_decode
        obj, end = self.scan_once(s, idx)
    json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    

方法二

  • 使用eval(不推荐使用,有可能会被人恶意利用执行一些危险的代码)

    s = "{'name': '张三'}"
    print(eval(s))
    ------
    
    {'name': '张三'}
    

方法三

  • 使用ast.literal_eval(推荐使用,只会执行合法的Python类型)

    import ast
    s = "{'name': '张三'}"
    print(ast.literal_eval(s))
    ------
    
    {'name': '张三'}
    

参考链接:python字符串转字典

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。