第一想到的是 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'}