如何让Python保持打印类型信息?

时间:2016-10-31 16:29:51

标签: python python-2.7 printing

(这个问题与this one有某种关系。)

我有一个对象' o,它是从第三方模块(其代码非常复杂)返回的。 打印此对象时,我得到此输出:

>>> print(o)
[{'pid':  [unsigned int:UniqueProcessId]: 0x000007FC, 'name':  [String:ImageFileName]: 'leon.exe\x00', 'offset': 2236079360}]

据我了解,这是一个词典列表。 但是,输出还包含一些其他类型信息(例如:[unsigned int:UniqueProcessId]),这些信息阻止我使用' ast'来解析此输出。模块(即使用ast.literal_eval()函数)。

我的问题是:我怎样才能避免打印出这种类型的信息? 那是我想得到这个输出:

>>> smartprint(o)
[{'pid': 0x000007FC, 'name': 'leon.exe', 'offset': 2236079360}]

另外:你能解释一下为什么打印出这些信息以及它实际代表什么? 如果我在循环中打印单个值,就像在此代码中一样:

    for ps in out:
    first = True
    for info in ps:
        if first:
            first = False
        else:
            print '\'%s\':\'%s\'' % (info, ps[info])

我没有获得任何其他类型信息。相反,我得到的是:

'pid':'2044'
'name':'leon.exe'
'offset':'2236079360'

为什么?

1 个答案:

答案 0 :(得分:-1)

看起来TYPES是详细信息,不是密钥值的一部分。我建议使用build in type函数。

data = {"hello": 1}
# print the type for the object
print(type(data))

# to get for each key,val
for k,v in data.iteritems():
    print(type(k), type(v))

输出:

<type 'dict'>
(<type 'str'>, <type 'int'>)