84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
比如: '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'是一个字符串。
# coding: utf-8 l = dict() s = "a=b".split("=") l[s[0]] = s[1] print l
如果只是'a=b'这样的字符串,那么跟QueryString的语法类似,用Python的urlparse.parse_qsl函数就可以搞定:
我假设你有一堆这种数据,要存储到同一个字典里(否则你的问题就没什么意义了):
第一想到的是
exec
:但是好像有点不合题意,第二想到的是
str.split
,上面已经有了,不作举例。然后我丧心病狂地想到
ConfigParser
...dict(a=1) 是可以成这样的 {'a': 1}
请看楼下的,没注意到'a=b'是一个字符串。