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