当我这样做时ast.literal_eval()
,我得到ValueError: malformed string
了下面的行z = ast.literal_eval(a)
。为什么这不起作用?
(请注意 - 下面一行中的“某物”有 4 个或更多命名元组)
for thing in something:
a = thing._asdict()
z = ast.literal_eval(a)
print z
如果我做一个简单的print a
,我得到
OrderedDict([('a', 0.0), ('b', 0.0), ('c', 0.0), ('d', 100.0)])
没有ast.literal_eval(a)
,当我尝试使用“a”作为字典时,它会引发AttributeError: 'str' object has no attribute 'items'
. 这是扩展代码——
for thing in something:
a = thing._asdict()
print a
z = ast.literal_eval(a)
print a
d = {}
for in_d in z:
for k, v in in_d.iteritems():
d.setdefault(k, []).append(v)
print d
merged = {}
for d in z:
d=d[1:-1]
for k, v in d.items():
if k not in merged: merged [k] = []
merged [k].append (v)
print merged
编辑:当我尝试 json.loads(thing) 时,我得到TypeError: expected string or buffer
. 所以我认为thing
不是字符串。然后我不知道为什么它在抱怨它是str object
我使用它的时候。