在python中获取JSON var值

时间:2014-02-06 20:09:03

标签: python json

在Python中,提取包含JavaScript变量定义的行并获取分配给它的值的最简单方法是什么(我正在使用BeautifulSoup从网页抓取JavaScript),它包含在花括号中(即{, }),请记住,变量本身可能包含任何几个级别的嵌套花括号。

例如输入

var myVar  =  { "a": "123","b":"345", "c": {"c1":20,"c2":"c123", "c3": {"c3_1": {"c3_1_1":"12"}}}, "d":21, "e":["1","2"]}

我希望将完整的myVar值作为string(因为我希望在此之后将其转换为Python list),

{ "a": "123","b":"345", "c": {"c1":20,"c2":"c123", "c3": {"c3_1": {"c3_1_1":"12"}}}, "d":21, "e":["1","2"]}

任何帮助都会很棒,因为我不熟悉Python。

2 个答案:

答案 0 :(得分:1)

import json
a = json.dumps(myVar)

变量a在此示例中属于字符串类型。你可以随意操纵它。

答案 1 :(得分:1)

使用str.index查找json对象的开始位置re.sub {"a": "123" a:"123"} str.replace(将单引号更改为双引号: ['1','2'])修复json:

import json
import re

var = '''var myVar  =  { a: "123",b:"345", c: {c1:20,c2:"c123", c3: {c3_1: {c3_1_1:"12"}}}, d:21, e:['1','2']}'''
v = var[var.index('{'):]
v = re.sub(r'(\w*):', r'"\1":', v)
v = v.replace('\'', '\"')

>>> v
'{ "a": "123","b":"345", "c": {"c1":20,"c2":"c123", "c3": {"c3_1": {"c3_1_1":"12"}}}, "d":21, "e":["1","2"]}'
>>> json.loads(v)
{u'a': u'123', u'c': {u'c3': {u'c3_1': {u'c3_1_1': u'12'}}, u'c2': u'c123', u'c1': 20}, u'b': u'345', u'e': [u'1', u'2'], u'd': 21}