python 如何把'a=b'这样的字符解析成dict类型
ringa_lee
ringa_lee 2017-04-17 11:50:43
[Python讨论组]

比如:
'a=b'这样的字符数据,转换成python中的dict类型,{'a':'b'}。

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
天蓬老师

如果只是'a=b'这样的字符串,那么跟QueryString的语法类似,用Python的urlparse.parse_qsl函数就可以搞定:

import urlparse
ret = dict(urlparse.parse_qsl('a=b'))
巴扎黑

我假设你有一堆这种数据,要存储到同一个字典里(否则你的问题就没什么意义了):

>>> import sys
>>> dict(l.split('=', 1) for l in sys.stdin)
PHP中文网

第一想到的是 exec

# http://codepad.org/25Zwz7ys
namespace = {}
exec("a='b';c='d'", namespace)
del namespace['__builtins__']
print namespace

但是好像有点不合题意,第二想到的是 str.split,上面已经有了,不作举例。

然后我丧心病狂地想到 ConfigParser...

class toDict(object):
    def __new__(self, *data):
        if not data:
            return {}

        import os
        import ConfigParser

        parser = ConfigParser.ConfigParser()
        buf = 'buffer.buf'

        f = open(buf, 'w')
        f.write("[section_data]" + os.linesep)
        for i in data:
            f.write(i + os.linesep)
        f.close()

        parser.read(buf)
        items = parser.items("section_data")

        ret = {}
        for i in items:
            ret[i[0]] = i[1]

        os.remove(buf)
        del parser

        return ret

if __name__ == '__main__':
    print toDict()
        # {}
    print toDict("a=b")
        # {'a': 'b'}
    print toDict("a=b", "c=d", "你好=世界", "1=2")
        # {'a': 'b', '1': '2', 'c': 'd', '\xc4\xe3\xba\xc3': '\xca\xc0\xbd\xe7'}
阿神

dict(a=1) 是可以成这样的 {'a': 1}

请看楼下的,没注意到'a=b'是一个字符串。

PHP中文网
# coding: utf-8
l = dict()
s = "a=b".split("=")
l[s[0]] = s[1]
print l
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号