1. 程式人生 > >PYTHON中將STRING轉化為DICT的方法

PYTHON中將STRING轉化為DICT的方法

我將資料庫連線相關的一些使用者名稱/密碼/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哦。

importMySQLdbimportastimportjsondefmy_run():try:s='{"host":"192.168.11.22", "port":3306, "user":"abc",\              "passwd":"123", "db":"mydb", "connect_timeout":10}'d=ast.literal_eval(s)printtype(d)printdd1=eval(s)printtype(d1)printd1d2=json.loads(s)printtype(d2)printd2MySQLdb.Connect(host=d['host'
],port=d['port'],user=d['user'],passwd=d['passwd'],db=d['db'],connect_timeout=d['connect_timeout'])print'right'exceptException,e:print'wrong %s'%eif__name__=='__main__':my_run()