比如: 'a=b'这样的字符数据,转换成python中的dict类型,{'a':'b'}。
ringa_lee
如果只是'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)
第一個想到的是 exec:
exec
# http://codepad.org/25Zwz7ys namespace = {} exec("a='b';c='d'", namespace) del namespace['__builtins__'] print namespace
但是好像有點不合題意,第二想到的是 str.split,上面已經有了,不作舉例。
str.split
然後我喪心病狂地想到 ConfigParser...
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'是一個字串。
雷雷
如果只是'a=b'這樣的字串,那麼跟QueryString的語法類似,用Python的urlparse.parse_qsl函數就可以搞定:
我假設你有一堆這種數據,要儲存到同一個字典裡(否則你的問題就沒什麼意義了):
第一個想到的是
exec
:但是好像有點不合題意,第二想到的是
str.split
,上面已經有了,不作舉例。然後我喪心病狂地想到
ConfigParser
...dict(a=1) 是可以成這樣的 {'a': 1}
請看樓下的,沒注意到'a=b'是一個字串。
雷雷