将字符串转换为字典的简单方法

ast*_*rog 6 python string dictionary

将一串keyword =值转换为字典的最简单方法是什么,例如以下字符串:

name="John Smith", age=34, height=173.2, location="US", avatar=":,=)"
Run Code Online (Sandbox Code Playgroud)

到下面的python字典:

{'name':'John Smith', 'age':34, 'height':173.2, 'location':'US', 'avatar':':,=)'}
Run Code Online (Sandbox Code Playgroud)

'avatar'键只是为了表明字符串可以包含=和,所以简单的'拆分'是不行的.有任何想法吗?谢谢!

twn*_*ale 9

这对我有用:

# get all the items
matches = re.findall(r'\w+=".+?"', s) + re.findall(r'\w+=[\d.]+',s)

# partition each match at '='
matches = [m.group().split('=', 1) for m in matches]

# use results to make a dict
d = dict(matches)
Run Code Online (Sandbox Code Playgroud)

  • 相信我的朋友,他们值得努力.找一个好的交互式正则表达式测试仪(如redemo.py),让你的脚湿透! (5认同)
  • 请注意,有一些字符串会导致上述正则表达式解决方案做出奇怪的事情,例如`avatar ="p = 0"`,或更糟糕的`avatar ="age = 123"`.如果有人担心你,你需要一个基于解析器的解决方案.BTW我不知道你是否对输入格式有任何控制,但JSON非常接近上面的输入格式,并且几乎每种语言都有模块来解析它.http://json.org/ (3认同)