天蓬老师2017-04-17 11:52:43
如果只是'a=b'这样的字符串,那么跟QueryString的语法类似,用Python的urlparse.parse_qsl函数就可以搞定:
import urlparse
ret = dict(urlparse.parse_qsl('a=b'))
巴扎黑2017-04-17 11:52:43
我假设你有一堆这种数据,要存储到同一个字典里(否则你的问题就没什么意义了):
>>> import sys
>>> dict(l.split('=', 1) for l in sys.stdin)
PHP中文网2017-04-17 11:52:43
第一想到的是 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'}
PHP中文网2017-04-17 11:52:43
# coding: utf-8
l = dict()
s = "a=b".split("=")
l[s[0]] = s[1]
print l