Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正在寻找一个可以找到“}”的正则表达式{";此模式用于在python中更正json对象_Python_Json_Regex - Fatal编程技术网

我正在寻找一个可以找到“}”的正则表达式{";此模式用于在python中更正json对象

我正在寻找一个可以找到“}”的正则表达式{";此模式用于在python中更正json对象,python,json,regex,Python,Json,Regex,有些人的帮助会很有帮助。 json模式如下所示: { "type": "object", "properties": ["Street", "Avenue", "Boulevard"] } } { "type": "object", "properties": ["Street", "Avenue", "Boulevard"] } } 目前它不是json格式,我正在尝试正确格式化它,以便json.loads方法可以解析多个对象 到目前为止,我已经得到了“}\r\n}”和

有些人的帮助会很有帮助。 json模式如下所示:

{
  "type": "object",
  "properties": ["Street", "Avenue", "Boulevard"]
  }
}
{
  "type": "object",
  "properties": ["Street", "Avenue", "Boulevard"]
  }
}
目前它不是json格式,我正在尝试正确格式化它,以便json.loads方法可以解析多个对象


到目前为止,我已经得到了“}\r\n}”和“*?(?=}\r\n})”这在我的JSON文件中不起作用。它说没有匹配项,但我能够在一个在线验证器中验证正则表达式的含义。

您可以尝试匹配
}{

(?s)}[^{}]*\}[^{}]*{

在python脚本中

ss=""" (copy & paste your text in this area)  """

regx= re.compile(r'(?s)}[^{}]*\}[^{}]*{')
print(regx.sub('SomethingYouWant',ss))    # replace all target strings to SomethingYouWant
输出为

{
  "type": "object",
  "properties": ["Street", "Avenue", "Boulevard"]
  SomethingYouWant
  "type": "object",
  "properties": ["Street", "Avenue", "Boulevard"]
  }
}

类似于?预期的输出是什么?属性重复,所以您想要一个数组还是…?看起来您的数据有一个额外的“}”,这就是您想要摆脱的?完成后仍然不是json,因为DICT没有封装在外部容器中。你能发布示例代码让我们看看如何调用正则表达式吗?更大的问题是,它是什么格式?我向您展示了一个脆弱的黑客攻击,如果其中有匹配相同模式的合法大括号,它可能会爆炸。如果您正在读取多个单独的json流,然后希望将它们全部输出到一个列表中,那么您不希望降级到regexp黑客攻击文本。最好将所有数据转换为python数据,将它们插入列表中,然后将列表转换回Json。更易于维护。不幸的是,它可以在线工作,但由于某些原因不能与python一起工作。这是我的function.cont=re.findall(r“(?s)}[^{}]*\}[^{}]*{”,str(file.read()),flags=re.MULTILINE)你能上传一个示例文件吗?它必须在
单线
中实现(
dotall
)模式,不在
multiline
模式下。请删除脚本中的
flags=re.multiline
,如您所见,上述注释中的示例文本中没有匹配项。请上载另一个。此命令运行良好,
re.findall(r)(?s)}[^{}]*\[^{}]*{,ss)