是否有任何方法在python中使用正则表达式替换花括号,
{
(逗号)的所有出现次数
文件中的数据格式如下 - abc.json
{
"Key1":"value1",
"Key2":"value2"
},
{
"Key1":"value3",
"Key2":"value4"
},
{
"Key1":"value5",
"Key2":"value6"
}
这应该导致以下 -
{
"Key1":"value1",
"Key2":"value2"
}
{
"Key1":"value3",
"Key2":"value4"
}
{
"Key1":"value5",
"Key2":"value6"
}
正如您所看到的,,
(逗号)已在每个大括号}
后删除。
如果除了python REGEX
之外,还可以通过jq实现这一点答案 0 :(得分:1)
测试来源:https://regex101.com/r/wT6uU2/1
import re
p = re.compile(ur'},')
test_str = u"{\n\"Key1\":\"value1\",\n\"Key2\":\"value2\"\n},\n\n{\n\"Key1\":\"value3\",\n\"Key2\":\"value4\"\n},\n\n{\n\"Key1\":\"value5\",\n\"Key2\":\"value6\"\n}"
re.findall(p, test_str)
但是使用替换
替换}, - > }
答案 1 :(得分:0)
这有效:
import re
s="""{
"Key1":"value1",
"Key2":"value2"
},
{
"Key1":"value3",
"Key2":"value4"
},
{
"Key1":"value5",
"Key2":"value6"
}"""
pattern=re.compile(r'(?P<data>{.*?}),', re.S)
print pattern.findall(s)
s1=pattern.sub(r'\g<data>', s)
print s1
答案 2 :(得分:0)
如果您打算在jq中处理生成的JSON,可能更容易将其包装在括号[{...}, {...}]
中以使其成为JSON数组。然后,您可以在jq中使用.[]
来解包数组。
答案 3 :(得分:0)
在你考虑其他选项之前,你真的应该回到生成该文件的源,并确保它实际输出有效 json。
也就是说,您可以使用JQ将内容作为原始字符串进行操作以添加括号,然后将其解析为数组,以便将内容吐出。
$ jq -Rs '"[\(.)]" | fromjson[]' abc.json