1

当我这样做时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我使用它的时候。

4

0 回答 0