装载自:http://smilejay.com/2014/10/convert_string_to_dict_python/

我将数据库连接相关的一些用户名/密码/host/port等各种东西作为一个string保存在了数据库中,我要用MySQLdb检查这些数据库连接信息是够能正常使用,需要将数据库信息中的用户名/密码/host/port等信息作为参数传给MySQLdb.Connect()。者就需要将'{“host”:”192.168.11.22″, “port”:3306, “user”:”abc”,”passwd”:”123″, “db”:”mydb”, “connect_timeout”:10}’”这样的string转化为dict。

在python中,将string转为一个dict,我所知有如下3中方法:
1. ast.literal_eval() 这是我常用的,依赖python2.6以上,据介绍时说比直接eval更安全一些,我没细究哈。
2. eval() 在string内容比较可控/安全的前提下,eval是不错的方法。
3. json.loads() 用json提供的loads方法是不错的,不过key/value中的string被转化为了unicode哦。

看实例代码:https://github.com/smilejay/python/blob/master/py2014/string2dict.py

Created on Oct 14, 2014

@author: Jay <smile665@gmail.com>
''' import MySQLdb
import ast
import json def my_run():
try:
s = '{"host":"192.168.11.22", "port":3306, "user":"abc",\
"passwd":"123", "db":"mydb", "connect_timeout":10}'
d = ast.literal_eval(s)
print type(d)
print d
d1 = eval(s)
print type(d1)
print d1
d2 = json.loads(s)
print type(d2)
print d2
MySQLdb.Connect(host=d['host'], port=d['port'], user=d['user'],
passwd=d['passwd'], db=d['db'],
connect_timeout=d['connect_timeout'])
print 'right'
except Exception, e:
print 'wrong %s' % e if __name__ == '__main__':
my_run()

参考资料:
http://stackoverflow.com/questions/988228/converting-a-string-to-dictionary
http://stackoverflow.com/questions/15596121/converting-a-string-into-dictionary-python

最新文章

  1. Get请求中文乱码的几种解决方式
  2. 黑客们的故事(连载六):IT世界里的理想主义者
  3. Java基础-重写-子类重写父类中的方法后执行情况
  4. 线程间通信--生产者消费者 升级版JDK5
  5. Good Numbers
  6. 目前所有的ANN神经网络算法大全
  7. 7——ThinkPhp中的响应和重定向:
  8. virtualenv的使用及pip常用命令
  9. Postman教程
  10. [转载]C#中IndexOf的使用
  11. git命令小记
  12. windows和linux 下将tomcat注册为服务
  13. NUC972配置为支持NFS
  14. 基于docker创建的Jenkins,settings.xml文件放在哪里
  15. 工作好搭档(四):铷安居 H-C81 电脑桌
  16. SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇
  17. 0054 Spring MVC的@Controller和@RequestMapping注解
  18. Android进程间的通信
  19. 看angualrjs源码中怎么判断所属的类型
  20. Visual Studio Code配置 HTML 开发环境

热门文章

  1. Max Sum(经典DP)
  2. 最短路问题(floyd算法)(优化待续)
  3. 01:谁考了第k名 个人博客:doubleq.win
  4. 关于java赋值运算的一个小例子
  5. Arcgis GDB文件地理数据库、shapefile、coverage 和其他基于文件的数据源所支持的函数的完整列表
  6. LDAP 原理图解
  7. 结对编程项目总结(core2组)
  8. c# 操作临时数据---XML操作
  9. C#多个线程同时执行一个任务示例
  10. winform ComboBox控件反选