我正在解析包含json对象的文件。问题是某些文件在一行中有多个对象。例如:
{"data1": {"data1_inside": "bla{bl\"a"}}{"data1": {"data1_inside": "blabla["}}{"data1": {"data1_inside": "bla{bla"}}{"data1": {"data1_inside": "bla["}}
我做了一个函数,尝试在没有左括号的情况下解析子字符串,但是值中可能有大括号。我尝试过通过检查引号的开头和结尾来跳过值,但是也有带有转义引号的值。有关如何处理此问题的任何想法?
我的尝试:
def get_lines(data):
lines = []
open_brackets = 0
start = 0
is_comment = False
for index, c in enumerate(data):
if c == '"':
is_comment = not is_comment
elif not is_comment:
if c == '{':
if not open_brackets:
start = index
open_brackets += 1
if c == '}':
open_brackets -= 1
if not open_brackets:
lines.append(data[start: index+1])
return lines
简单但不够健壮的版本:
>>> import re
>>> s = r'{"data1": {"data1_inside": "bla{bl\"a"}}{"data1": {"data1_inside": "blabla["}}{"data1": {"data1_inside": "bla{bla"}}{"data1": {"data1_inside": "bla["}}'
>>> r = re.split('(\{.*?\})(?= *\{)', s)
['', '{"data1": {"data1_inside": "bla{bl\\"a"}}', '', '{"data1": {"data1_inside": "blabla["}}', '', '{"data1": {"data1_inside": "bla{bla"}}', '{"data1": {"data1_inside": "bla["}}']
如果}{
包含在字符串中,则将失败
正如其他建议一样,您然后可以尝试解析每个元素。如果无效,则应与下一个元素一起检查此元素。
请注意,这r
是上面代码的结果
accumulator = ''
res = []
for subs in r:
accumulator += subs
try:
res.append(json.loads(accumulator))
accumulator = ''
except:
pass
问题内容: 使用该包可以很容易地解析如下对象。 我面临的问题是从服务器返回多个命令,如下所示: 无法使用以下代码进行解析。 我正在尝试解析Common Crawl数据(请参阅示例)。 我怎样才能做到这一点? 问题答案: 假设您的输入确实是一系列有效的JSON文档,请使用json.Decoder对其进行解码: 游乐场:https://play.golang.org/p/ANx8MoMC0yq 如果您
我想解析一个包含多个JSON对象的文件,这些对象未包含在数组中,仅由换行符分隔。该文件具有以下模式: 据我所知,使用的标准方法在这里不起作用,因为对象没有包含在数组中。那么有没有一种优雅的方法可以在Python中解析这样的文件而不修改它呢?
问题内容: 我有一个JSON对象流,就像通过TCP或WebSockets的JSON- RPC一样。没有长度前缀或定界符,因为JSON是自定界的。因此,当我从流中读取内容时,可能会遇到如下所示的结果: 我需要一个一个地解析每个JSON对象。我无法使用JSON.parse做到这一点,因为它只会在末尾抛出无关数据的语法错误。 当然,在这个示例中,我可以逐行进行,但是我不能依赖像这样的空白。JSON-RP
我正在尝试用Python加载和解析一个JSON文件。但我无法加载文件: 收益率:
问题内容: 我有一个来自服务器的JSON字符串,它看起来像这样: 我的任务是获取“ term_id”和“ name”字段的值。我曾经使用以下代码从当前JSONObject中获取“类别”对象: 和看起来像这样: 但是在那之后,我不知道如何获得这些领域。有什么方法可以从JSONObject获取所有JSONObject子级吗? 如果您有源代码或可以举一个例子,请与我分享。 问题答案: 在这里,您可以检索
问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着 18.2。— Python文档中的 JSON编码器和解码器 ,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 您有一个JSON Lines格式的文本文件。您需要逐行解析文件: 每 行都 包含有效的JSON,但总的来说,它不是有效的JSON值,因为没