我有一个描述mysql连接的简单字符串。字符串采用以下形式:
dsn = 'user=dbuser database=mydbase host=localhost'
此字符串可以包含此处列出的连接参数中列出的许多内容:
http://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html
基本上,当你连接到数据库时,你会这样做:
cnx = MySQLConnection(user='dbuser', database='mydbase', host='localhost')
我想从字符串创建类创建的name = value参数。所以我创建了一些代码,用于将字符串格式转换为可以使用**运算符调用的字典格式。我是这样做的:
import json, re
cnx = MySQLConnection(**json.loads('{'+','.join(re.sub(r'([a-z0-9_-]*)=([a-z0-9_-]*)','"\\1":"\\2"',dsn).split())+'}'))
它的工作原理是在字符串中查找name = value模式并将其更改为" name":" value"字符串段,它用每个段之间的逗号连接它们,用{}字符(创建一个json字符串)将新字符串bookends,然后加载json以将其转换为字典格式。这对我来说似乎太复杂了。有没有更简单的方法从这样的字符串转换为字典?
答案 0 :(得分:2)
一种简单的方法是使用str.split
:
>>> vals = "key=val key2=val2"
>>> dict(s.split("=") for s in vals.split())
{'key2': 'val2', 'key': 'val'}