Python字符串转为字典方法大全

2023-11-11

方法一: 通过内置函数eval

1

2

3

4

5

6

7

8

9

10

11

12

13

str_info = '{"name": "test", "age": 18}'

dict_info = eval(str_info)

print("string info type is -->: %s" % (type(str_info)))

print("dict info type is -->: %s" % (type(dict_info)))

print(dict_info)

s_info = "{'name': 'nock', 'age': 18}"

d_info = eval(s_info)

print("string info type is -->: %s" % (type(s_info)))

print("dict info type is -->: %s" % (type(d_info)))

print(d_info)

  

1

2

3

4

5

6

7

8

9

F:\python\python35\python.exe E:/code/clself/Test/test_example1.py

string info type is -->: <class 'str'>

dict info type is -->: <class 'dict'>

{'name''test''age'18}

string info type is -->: <class 'str'>

dict info type is -->: <class 'dict'>

{'name''nock''age'18}

Process finished with exit code 0

  

不过使用eval有一个安全性问题

方法二: 通过json模块处理

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import json

str_info = '{"name": "test", "age": 18}'

dict_info = json.loads(str_info)

print("string info type is -->: %s" % (type(str_info)))

print("dict info type is -->: %s" % (type(dict_info)))

print(dict_info)

s_info = "{'name': 'nock', 'age': 18}"

d_info = json.loads(s_info)

print("s info type is -->: %s" % (type(s_info)))

print("d info type is -->: %s" % (type(d_info)))

print(d_info)

结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

F:\python\python35\python.exe E:/code/clself/Test/test_example1.py

string info type is -->: <class 'str'>

dict info type is -->: <class 'dict'>

{'name''test''age'18}

Traceback (most recent call last):

  File "E:/code/clself/Test/test_example1.py", line 10in <module>

    d_info = json.loads(s_info)

  File "F:\python\python35\lib\json\__init__.py", line 319in loads

    return _default_decoder.decode(s)

  File "F:\python\python35\lib\json\decoder.py", line 339in decode

    obj, end = self.raw_decode(s, idx=_w(s, 0).end())

  File "F:\python\python35\lib\json\decoder.py", line 355in 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)

Process finished with exit code 1

  

使用json模块进行转换存在一个问题,由于json语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号

方法三: 通过ast模块处理【推荐使用】

复制代码

import ast
str_info = '{"name": "test", "age": 18}'
dict_info = ast.literal_eval(str_info)

print("string info type is -->: %s" % (type(str_info)))
print("dict info type is -->: %s" % (type(dict_info)))
print(dict_info)

s_info = "{'name': 'nock', 'age': 18}"
d_info = ast.literal_eval(s_info)

print("s info type is -->: %s" % (type(s_info)))
print("d info type is -->: %s" % (type(d_info)))
print(d_info)

复制代码

1

2

3

4

5

6

7

F:\python\python35\python.exe E:/code/clself/Test/test_example1.py

string info type is -->: <class 'str'>

dict info type is -->: <class 'dict'>

{'name''test''age'18}

s info type is -->: <class 'str'>

d info type is -->: <class 'dict'>

{'name''test''age'18}

使用ast.literal_eval进行转换既不存在使用json 模块进行转换的问题,也不存在使用eval模块进行转换的安全性问题,因此推荐大家使用ast.literal_eval的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python字符串转为字典方法大全 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O

随机推荐

  • 有源滤波器治理谐波好在哪

    减小谐波影响应对谐波源本身或在附近采取适当的措施 通常情况下 采用加装滤波器的方式治理谐波 滤波器一般分为无源滤波器和有源滤波器 下面领步 北京 根据多年的实践经验给出一个具体的解决方案 在有谐波问题是 什么样的选择才是最好的 谐波的危害
  • React---使用componentDidUpdate钩子函数判断路由地址是否发生变化

    在组件更新 例如组件的路由更新 后会执行componentDidUpdate钩子函数 componentDidUpdate方法会传入两个参数 prevProps prevState prevProps prevState可以拿到组件更新前的
  • Web3 入门手册:从认知到实践

    如果你也喜欢 Web3 希望在这做些有趣的 有意义的事情 那么我希望这篇文章可以帮助到你 送给想要进入 Web3 或者刚刚进入 Web3 的小伙伴 但是考虑到两点原因 我还是打算把这件事推迟一些时日 一是在各大媒体都鼓吹 All In We
  • 如何将pdf转换成txt?悄悄告诉你3个好用的转换方法

    pdf和txt文档都是我们经常会使用到的文档格式 这两种文档各有各的特点 pdf文档适合用于展示 而txt文档适合用于整理各种文字信息 在面对不同的情况时我们就要使用不同的文档 就比如将纯文字的资料进行搜集的时候 利用txt文档会更方便 而
  • 如何在vue中引入字体

    一 为什么要引入字体 在前端开发中 选用合适的字体往往会极大地提升网站的视觉体验 然而 网页中默认字体的种类和风格有限 且在不同的设备 浏览器上渲染效果不尽相同 因此 很多开发者会选择自定义字体来提升用户体验 二 如何引入字体 1 搜索下载
  • 2020华为杯数学建模总结

    2020研究生数学建模竞赛总结 题目 2020年中国研究生数学建模竞赛B题 降低汽油精制过程中的辛烷值损失模型 一 背景 汽油是小型车辆的主要燃料 汽油燃烧产生的尾气排放对大气环境有重要影响 为此 世界各国都制定了日益严格的汽油质量标准 见
  • linux 套接字文件类型,Linux下的文件类型

    Linux下的文件类型 1 开头 表示普通文件 2 d开头 表示目录文件 3 b开头 表示块设备 4 c开头 表示是字符设备 5 I开头 表示符号链接文件 6 p开头 表示管道文件pipe 7 s开头 表示套接字文件socket root
  • 浅谈BERT/Transformer模型的压缩与优化加速

    作者 姚益武 单位 阿里巴巴集团 研究方向 AI算法与工程架构 前言 BERT Transformer 结构及其变体 已成为自然语言处理 NLP 语音识别 ASR 等领域的主流序列建模结构 并且 相比于卷积操作的局部特征提取能力 以及平移不
  • 【Python】ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any

    一 问题描述 在使用Python的判断语句的时候 data2 data2 Month 11 and data2 Day 11 我的本意是想找出11月11日的数据 运用上面的代码 却得到了报错 报错信息 ValueError The trut
  • [QT编程系列-38]:数据存储 - SQLite数据库存储与操作

    目录 1 SQLite数据库概述 1 1 简介 1 2 SQLite不支持网络连接 1 3 SQLite不需要安装MySQL Server数据库 1 4 SQLite性能 1 5 SQLite支持的数据条目 2 SQLite操作示例 3 Q
  • 找不到插件 ‘org.springframework.boot:spring-boot-maven-plugin:‘问题

    出现pom文件找不到插件 org springframework boot spring boot maven plugin 问题 可能是因为版本没有绑定好 去一级父类依赖找对应的插件版本 在pom文件中加上 把父类的version加到po
  • 1小时学会CSS-下

    今天给大家分享的内容包含CSS 盒子模型 CSS 标准布局 CSS 浮动布局 并以案列进行详细说明 一 CSS 盒子模型 CSS 将所有元素都当成盒子 CSS布局其实就是如何堆放盒子 组成 content 内容 gt padding 内边距
  • 【c语言】小程序游戏——飞机游戏(二)

    在接下来 我们需要对飞机添加一些属性 1 利用键盘控制飞机的移动 2 按空格键可以发射激光 NO 1 利用键盘控制飞机的移动 首先我们需要了解的是 如果想要通过按键来控制飞机的移动 那么我们具体要怎么控制呢
  • Verilog(4)系统任务monitor,time,stop,random等,编译预处理语句

    调试用系统任务和常用编译预处理语句 用于调试和差错的系统任务 以及编写模块时的预处理语句 系统任务 monitor 提供了监控和输出参数列表中表达式或变量值的功能 参数列表中输出控制格式字符串和输出表列的规则和 d i s p l a
  • java基础之replace,replaceAll

    走在乡间的小路上 回首过往 以下代码结果都是显示在Console框中 所以 n会被解析成换行 n只显示 n 所以看到结果换行其实是输出了 n 看到输出 n 其实输出的是 n replace和replaceAll是编程中经常用到的替换函数 成
  • 求出1~N范围中所有的素数

    判断是否为素数 public static boolean isPrime int n int sqrt int Math sqrt n int i for i 2 i lt sqrt i if n i 0 break if i gt sq
  • 小程序瀑布流布局

    list wxml列表
  • Java的深浅拷贝机制

    Java的深浅拷贝机制 我们先理解一下深浅拷贝的概念 1 浅拷贝 Java在进行对象拷贝的过程中 对于他的成员变量进行拷贝 如果是基本数据类型 就会直接拷贝他的值 如果是引用类型 则会拷贝他的引用地址 而不会拷贝对象本身 2 深拷贝 Jav
  • Windows 10 和 Windows 11 有什么区别?

    Windows 10 和 Windows 11 有什么区别 Windows 11 具有 Windows 10 的全部功能和安全性 同时具有经重新设计而焕然一新的外观 它还自带一些新的工具 声音和应用 所有细节面面俱到 颜值 功能与安全性集于
  • Python字符串转为字典方法大全

    方法一 通过内置函数eval 1 2 3 4 5 6 7 8 9 10 11 12 13 str info name test age 18 dict info eval str info print string info type is