84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
比如: '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'是一个字符串。