首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python字典从字符串转换?

python字典从字符串转换?
EN

Stack Overflow用户
提问于 2010-05-07 16:51:33
回答 4查看 995关注 0票数 0

如果我有这样的字符串

代码语言:javascript
复制
"{ partner_name = test_partner}" OR " { partner_name : test_partner }

它的示例字符串将非常复杂,其中包含几个特殊字符,如=,{,}

将其转换为python对象的最佳方法是什么?这样我就可以处理它了。

我尝试了eval,但它要求字符串使用“‘”,但是我们如何在每个单词的开头和结尾添加这个特殊字符\’呢?我尝试了常规的express re.findal('\w+'),但当我的字符串包含‘_’或类似字符时,它会失败,因为它会用‘_’分隔字符串

这个问题的对象是我的应用程序需要,用户友好的语言作为输入-我认为Json Dict会很好-但用户懒惰地在每个字符串的前后加上“‘”……

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-07 17:29:39

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

票数 3
EN

Stack Overflow用户

发布于 2010-05-07 17:04:38

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

但是,您可以跳过一系列障碍,尝试通过json使输入成为parsable。这是脆弱的,因为您的输入并不完全是json,而不同的输入很容易打破这一点(尽管相对于平淡无奇地使用eval,我仍然认为它是首选)。

代码语言:javascript
复制
>>> 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'}
票数 1
EN

Stack Overflow用户

发布于 2010-05-07 17:05:55

如果是一些外部数据,请不要对其使用eval()!如果你想正确地解析它,可以看看一些解析库。使用解析组合子的解析器非常好--例如https://github.com/pyparsing/pyparsing,或者可能是一个peg解析器:http://fdik.org/pyPEG/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2787303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档