我有一个看起来像这样的json文件
[
{
"ID" : 230110850,
"geometry" : {
"type" : "Point",
"s1" : [ 22.226, 60.4 ]
},
"properties" : {
"timestamp" : 54,
}
{
"ID" : 265527480,
"type" : "Feature",
"geometry" : {
"type" : "Point",
"s1" : [ 22.2, 60.432 ]
},
"properties" : {
"timestamp" : 54,
}
]
我喜欢大约一百万行,但是json的某些元素未正确关闭。
我想做的是找到'}'
,如果我找到然后转到下一行,如果是nextline == '{',
,那么我想用'}, {'
替换该行。
这是我的代码,但无法正常工作。
lst = []
with open('a.txt', 'r') as f1: # a.txt contains those files
for line in f1:
if '}' is line:
line = next(f1)
if '{' is line:
lst.append(line.replace('{', '}, {'))
else:
lst.append(line)
这给我下一行循环带来的错误。
StopIteration
加上此代码将非常缓慢,因为它必须检查每一行。
有没有更好的解决方案(也许使用正则表达式多行)。任何建议,建议都很好。
答案 0 :(得分:2)
希望这会有所帮助,但您的里程可能会有所不同。 Explanation link
我试图保持某些格式完整无缺,以期希望可以更轻松地发现潜在问题,我怀疑可能有些问题。一般的想法是我一次性读取文件,并尝试在两行中匹配'} {'并相应地进行更改。
import re
with open('a.txt', 'r') as f1:
content = f1.read()
result = re.sub(r'}\n(\s*){', r'}\n\1},\n\1{', content)