【发布时间】:2015-07-30 14:48:50
【问题描述】:
您好,我有一个 json 文件并想解析它。我写了以下代码:
import json as simplejson
import os
for filename in os.listdir('/home/Documents/test/'):
with open('/home/Documents/test/' + filename) as file:
data = simplejson.load(file)
try:
if(data['scans']['Microsoft']['detected']==True):
label = data['scans']['Microsoft']['result']
print label
except (ValueError, KeyError, TypeError):
print "JSON format error"
但我收到以下错误:
ValueError: Expecting property name: line 1 column 1 (char 1)
你能帮我解决什么问题吗?我认为是因为我的文件包含 unicode 字符,但我不知道该如何解决。
这是我的 json 文件的一部分:
{u'md5': u'0a1cdc568b4da42cb7acce45834eb4ba',
u'permalink': u'https://www.virustotal.com/file/a0acc0feb1da7f571faaa7dc3b7ebcd1b856710d1f44cd6e0b57ec5a9bc70038/analysis/1383102973/',
u'positives': 42,
u'resource': u'0A1CDC568B4DA42CB7ACCE45834EB4BA',
u'response_code': 1,
u'scan_date': u'2013-10-30 03:16:13',
u'scan_id': u'a0acc0feb1da7f571faaa7dc3b7ebcd1b856710d1f44cd6e0b57ec5a9bc70038-1383102973',
u'scans': {u'AVG': {u'detected': True,
u'result': u'FakeAV.AFQQ',
u'update': u'20131029',
u'version': u'13.0.0.3169'},
u'Agnitum': {u'detected': True,
u'result': u'FraudTool.Agent!dfdcHBsNM3c',
u'update': u'20131029',
u'version': u'5.5.1.3'},
u'AhnLab-V3': {u'detected': True,
u'result': u'Trojan/Win32.FakeAV',
u'update': u'20131029',
u'version': u'2013.10.30.01'},
u'AntiVir': {u'detected': True,
u'result': u'TR/Winwebsec.bamnx',
u'update': u'20131030',
u'version': u'7.11.110.26'},
u'Antiy-AVL': {u'detected': False,
u'result': None,
u'update': u'20131029',
u'version': u'2.0.3.7'},
【问题讨论】:
-
您没有 JSON。你有 Python 文字。
-
你这是什么意思?我的文件有 json 扩展名..
-
修复创建文件的程序(不要使用
pprint.pformat(),使用json.dumps())或使用ast.literal_eval()从该字符串生成Python对象。 -
@Alex:仅仅因为它具有 .json 扩展名并不意味着它是实际的 JSON 数据。它不是。它包含 Python 2 文字语法。
-
@Martijn:感谢您的信息。我认为这是一个标准的 json 文件,因为我是从病毒总网站获得的。。
标签: python json python-2.7