天蓬老师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'}