您好我尝试打印dll_loaded列表
"behavior": {
"generic": [
{
"process_path": "C:\\Windows\\System32\\wscript.exe",
"summary": {
"dll_loaded": [
"C:\\Windows\\system32\\wshext.dll",
"C:\\Windows\\system32\\advapi32.dll",
]
}
}
但是它总是给我这个错误TypeError:字符串索引必须是整数
我尝试使用以下方法打印
for sys in json_data["behavior"]["generic"]:
for sys1 in sys["summary"]:
for sys2 in sys1["dll_loaded"]:
print(sys2)
我尝试打印sys1的类型,它给了我<<class'str'>`,不应该是列表吗?然后尝试将sys1视为字符串,并使用range和len进行打印,但这只会返回一个字符!
但是我不确定我要去哪里错了,有人可以帮忙吗?我正在使用Python 3.7
编辑 我尝试了John P的答案,它起作用了,但是现在我遇到了另一个问题,例如dll_loaded不是列表中的第一个元素
"behavior": {
"generic": [
{
"process_path": "C:\\Windows\\System32\\wscript.exe",
"summary": {
"file_created": [
"C:\\Users\\Administrator\\AppData\\Roaming\\WinRAR\\version.dat"
],
"file_recreated": [
"\\Device\\DfsClient"
],
"directory_created": [
"C:\\Users\\Administrator\\AppData\\Roaming\\WinRAR"
],
"dll_loaded": [
"C:\\Windows\\system32\\wshext.dll",
"C:\\Windows\\system32\\advapi32.dll",
]
}
}
抱歉,我仍然是Python的初学者
问题来源:stackoverflow
for sys in json_data["behavior"]["generic"]: for sys1 in sys["summary"]: for sys2 in sys["summary"][sys1]: print(sys2)
我认为您正在寻找的是这样的:
for sys in json_data["behavior"]["generic"][0]["summary"]['dll_loaded']:
print(sys)
不需要3层for循环,因为您仅对从json_data [“ behavior”] [“ generic”] [0] [“ summary”] ['dll_loaded']`生成的列表感兴趣。
关于您的问题,为什么sys1的类型是<class'str'>
,这是因为sys [“ summary”]给出一个单元素的字典而不是列表。如果在sys [“ summary”]
中的sys1使用的情况下遍历字典,则sys1引用字典中的键,在这种情况下,仅引用字符串“ dll_loaded”
。
如果您坚持要嵌套for循环(不建议使用),那么正确的人是这样的:
for sys in json_data["behavior"]["generic"]:
for sys1 in sys["summary"]:
for sys2 in sys["summary"][sys1]:
print(sys2)
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。