(这个问题与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'
为什么?
答案 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'>)