在python中使用字符串和json(json.loadsjson.dumps文件)

2024-10-03 23:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的绳子

 results = "{'eventid': '766', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.2.1.1.3.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}, {'eventid': '1.3.6.1.4.1.3955.2.7.1', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.6.3.1.1.4.1.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}"

我想把它解析成JSON。我的尝试:

^{pr2}$

给我一个

ValueError: Expecting property name: line 1 column 2 (char 1)

将字符串更改为:

results = "'details': {'eventid': '766', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.2.1.1.3.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}, {'eventid': '1.3.6.1.4.1.3955.2.7.1', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.6.3.1.1.4.1.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}"

给了我

ValueError: No JSON object could be decoded

欢迎任何帮助!提前谢谢!在


Tags: communityjsonresultstimestamphostnameenterpriseuptimecategory
2条回答

这对我有用。我不得不将下面的单引号改为双引号,因为和this answer一样,JSON语法不是Python语法。您还需要将2个JSON对象放入一个对象数组中,如果需要的话,可以在“details”键下。在

import json

results = "{'details':[{'eventid': '766', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.2.1.1.3.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}, {'eventid': '1.3.6.1.4.1.3955.2.7.1', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.6.3.1.1.4.1.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}]}"

results = results.replace("'", '"')
data = json.loads(results)

这不是有效的JSON,因为它有单引号而不是双引号。在

一个选项是使用^{}安全地评估这个字符串:

>>> from ast import literal_eval
>>> results = "{'eventid': '766', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.2.1.1.3.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}, {'eventid': '1.3.6.1.4.1.3955.2.7.1', 'category': '0', 'uptime': '0', 'severity': '0', 'traptime': '0', 'formatline': '0', 'hostname': '0', 'community': '0', 'agentip': '192.168.250.50', 'eventname': '1.3.6.1.6.3.1.1.4.1.0', 'timestamp': '17-12-2015', 'trapoid': '0', 'enterprise': '0'}"
>>> literal_eval(results)[0]['eventid']
'766'

相关问题 更多 >