python字典从字符串转换?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

如果我喜欢的话

"{ partner_name = test_partner}" OR " { partner_name : test_partner }

它的示例字符串将非常复杂,包括几个特殊字符,如=,[,],{,}

将它转换为python对象的最佳方法是什么 - 所以我可以处理它

我尝试使用eval,但它需要“'”作为字符串,但是如何在每个单词的开始和结束之前添加这个特殊字符,我尝试了常规表达re.findal('\ w +')但是当我的字符串失败时包含'_'或类似字符,因为它会将字符串分隔为'_'

这个问题的对象是我的应用程序需求,用户友好的语言作为输入 - 我认为Json Dict会很好 - 但是用户在每个字符串之前和之后放置“'”...

然后我想为yaml,但它也很复杂,如果有人可以建议更好的用户友好输入,我用作python对象 - 然后请帮助我。

提问于
用户回答回答于

如果YAML对于您的用户来说过于复杂,您应该考虑给他们一个结构化的输入表单并从那里正确地格式化数据。YAML对于指定结构非常容易编写,当然比花括号语法更容易。

用户回答回答于

修复输入将是最佳解决方案。

但是你可以在试图使输入通过一系列箍跳可解析json。这很脆弱,因为你的输入不是json,并且分歧输入可能很容易打破这个(虽然它仍然是优于平淡使用的首选eval)。

>>> import json
>>> s = '{ partner_name = test_partner}'
>>> t = s.replace(' ', '') # strip whitespace
>>> t = t.replace('=', '":"')
>>> t = t.replace('{','{"')
>>> t = t.replace('}','"}')
>>> json.loads(t)
{u'partner_name': u'test_partner'}

扫码关注云+社区

领取腾讯云代金券