问题:需要将一个 Python 的字符串转为字典,比如字符串:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'

想把它转为下面的字典:

user_dict = {"name" : "john", "gender" : "male", "age": 28}

有以下几种方法:

通过 json 来转换

#!/usr/bin/env python
import json
user_info= '{"name" : "john", "gender" : "male", "age": 28}'
user_dict = json.loads(user_info)
print(user_dict)
{'name': 'john', 'gender': 'male', 'age': 28}

但是使用 json 进行转换存在一个潜在的问题。

由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号 (官网上有一段描述是 “A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes” ),因此下面的转换是错误的:

import json
user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
# 由于字符串使用单引号,会导致运行出错
user_dict = json.loads(user_info)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:
line 1 column 2 (char 1)

通过 eval

user_info = '{"name" : "john", "gender" : "male", "age": 28}'
user_dict = eval(user_info)
print(user_dict)
{'name': 'john', 'gender': 'male', 'age': 28}# 注意单双引号的位置
user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
user_dict = eval(user_info)
print(user_dict)
{'name': 'john', 'gender': 'male', 'age': 28}

通过 literal_eval

import ast
user = '{"name" : "john", "gender" : "male", "age": 28}'
user_dict = ast.literal_eval(user)
print(user_dict)
{'name': 'john', 'gender': 'male', 'age': 28}import ast
user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
user_dict = ast.literal_eval(user_info)
print(user_dict)
{'name': 'john', 'gender': 'male', 'age': 28}

使用 ast.literal_eval 进行转换既不存在使用 json 进行转换的问题,也不存在使用 eval 进行转换的 安全性问题,因此推荐使用 ast.literal_eval

将字符串转为16进制数_Python 如何将字符串转为字典相关推荐

  1. 将字符串转为16进制数_C语言中的进制互转与数值和字符串互转的混搭玩法

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 很多事根本就没有那么多的前提可言,想做事,就不要把先决条件看得过重. 文 章 导 读 今天给小伙伴们介绍下了下进制转换和字符串与数值互转的方法 ...

  2. 嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include<st ...

  3. QT颜色选择框以及如何将RGB转为16进制数

    QT 颜色选择框的使用 QColorDialog类 //声明变量 QColorDialog m_colorDialog; //获取被选中的颜色值(注:RGB类型的) QColor _color = m ...

  4. arduino字符串转16进制数 大彩串口屏用。

    String Zi_Fu_Chuan = "我是中国人ABCD4567.879";//字符串void setup() {Serial.begin(115200); }void lo ...

  5. linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...

  6. Java 字符串转16进制数

    /*** 字符串转16进制* @param hex* @return*/ public static byte[] hex2byte(String hex) {String digital = &qu ...

  7. [转载] python字符串转化为16进制数_python实用知识,数值类型和进制整数的转换

    参考链接: 在Python中将整数int转换为字符串string 喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! 1.数值类型的转换 int()可以将字符串 ...

  8. 从字符串或16进制数得到UIColor

    +(UIColor*)GetColorFromCSSHex:(NSString *) hexColor{ // @"#FF3300"          if (hexColor = ...

  9. byte数组转字符串_VS2012 C# 16进制数与字符串的互换

    #编程基础##我要上头条# 一.字符串转换为16进制字节数组的步骤 1.将字符串按每两个字符拆分并插入逗号为分隔符: 2.将拆分后的字符串分离为字符串数组: 3.将字符串数组转换成字节数组并检测字符是 ...

最新文章

  1. linux系统下管理网口ip设置密码,Linux系统管理-(12)-网络配置IP命令
  2. 事件处理之一:两种方式:监听器与回调
  3. 我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...
  4. matlab计算三角格网面积,不规则平面图形的面积计算及其MATLAB实现.doc
  5. 使用jsoncpp解析json文件
  6. android 如何启动nfc卡模拟模式_用手机模拟小区业主卡,出入更加便捷,免去带卡的烦恼,(限安卓)...
  7. 最新Java基础面试题及答案整理
  8. typecho编辑器 图片修改宽度高度 并且设置居中
  9. Excel---饼图美化与ppt图表
  10. Evolutionary Learning: Advances in Theories and Algorithms PART I
  11. 随笔(2015.11)
  12. 玩转无线路由之DD-WRT基础扫盲
  13. 【C盘扩容→从空余0M到空余54.2G】
  14. 微信小程序登录密码MD5加密
  15. Java OOP 9 Java I/O
  16. 让人愤怒的google协作平台
  17. C语言学生成绩管理系统详解
  18. 桂电信科17级c语言期末试卷,桂电期末考试Linux习题总结
  19. CSDN付费专栏写作协议
  20. 手机礼物iPhone 5, Note II, Butterfly

热门文章

  1. 设计模式:观察者(Observer)模式
  2. iOS 11 适配集锦
  3. centos7 安装sqlserver驱动以及扩展
  4. 【IOS】从android角度来实现(理解)IOS的UITableView
  5. 这是自己的第一篇博客
  6. getFullYear 方法
  7. vijos p1782——借教室(noip2012提高组第2题)
  8. css样式(二)(伪类 | 伪元素 | 导航 | 图像拼合 | 属性选择器 )
  9. 学完之后,有什么证书发吗?要另外收费吗?收费多少? 学员每天的上课时间是怎样安排的?...
  10. 关注 Web Client Software Factory [Weekly Drop 08]