【发布时间】:2021-06-09 08:14:33
【问题描述】:
我是 Python3 的新手,我正在处理大型 JSON 对象。我有一个大的 JSON 对象,在两个 JSON 对象之间,大括号之间有额外的字符。
例如:
{"id":"121324343", "name":"foobar"}3$£_$£rvcfddkgga£($(>..bu&^783 { "id":"343554353", "name":"ABCXYZ"}'
这些额外的字符可以是任何字母数字、特殊字符或 ASCII。它们多次出现在这个大型 JSON 中,并且可以是任意长度。我正在尝试使用正则表达式来识别该模式以删除它们,但正则表达式似乎不起作用。这是我使用的正则表达式:
(^}\n[a-zA-Z0-9]+{$)
有没有办法在 python 中使用正则表达式来识别这种模式?
【问题讨论】:
-
您的正则表达式包含 \n 但您提供的行在单行上,是吗?
-
对于您展示的示例:
"}.+{"就足够了,但我认为这不会通过所有测试用例。如果您知道 json 的模式将是dict(id=number, name=string),您也可以对其进行过滤。示例:'{\s?"id":"\d+", "name":"\w+"}'(用于您提供的示例)。 -
我只是担心
r'(?<=})([^}{]+)(?={)'如果{出现在char 字符串中是问题,因为它应该识别{"以识别新对象是tarting -
@Thymen 在 dict 模式上过滤 json 听起来更合适。但是数据量大会影响性能
-
对象是否包含嵌套大括号?
标签: json python-3.x regex large-data