我正在尝试用RE解析数据。我必须解析的数据是:
"comments":
{
[
{ "id" : "001",
"x" : "2",
"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Chuck"
}
]
}
使用urllib我将上面的文本复制到一个字符串中,但我不想要所有的文本。我只想要这个:
[
{ "id" : "001",
"x" : "2",
"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Chuck"
}
]
我尝试过使用正则表达式,但我认为我做错了。我的正则表达式是:
y = re.findall("([.])", html)
我将其解释为查找[
和]
之间的所有字符,并将其保存在y
中。
答案 0 :(得分:2)
\[[^\]]+\]
x[x.find('['):x.find(']')]
答案 1 :(得分:0)
您需要使用反斜杠转义括号,并将.
注释为?
重复(但不包括结束括号)。使用re.DOTALL
标记可使.
包含换行符。然后,您可以将此字符串发送到ast.literal_eval()
进行评估:
import re
import ast
s = ''' "comments":
{
[
{ "id" : "001",
"x" : "2",
"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Chuck"
}
]
}'''
结果:
>>> ast.literal_eval(re.search(r'\[.*?\]', s, re.DOTALL).group(0))
[{'name': 'Chuck', 'x': '2', 'id': '001'}, {'name': 'Chuck', 'x': '7', 'id': '009'}]