将python中的dsn字符串转换为kwargs

时间:2014-09-15 21:56:43

标签: python regex kwargs

我有一个描述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以将其转换为字典格式。这对我来说似乎太复杂了。有没有更简单的方法从这样的字符串转换为字典?

1 个答案:

答案 0 :(得分:2)

一种简单的方法是使用str.split

>>> vals = "key=val key2=val2"
>>> dict(s.split("=") for s in vals.split())
{'key2': 'val2', 'key': 'val'}