我正在尝试解压缩gzip文件,以便只剩下一个包含许多json文件的文件,每个文件都在自己的一行上。但是,当我尝试在添加json文件后添加新行'\ n'时,没有任何反应。我的代码在这里怎么了?
import gzip
import json
def load_file(file):
if file.endswith('.gz'):
with gzip.open(file, 'rb') as fff:
file_content = fff.readlines()
else:
with open(file) as fileopen:
file_content = fileopen.readlines()
return file_content
loaded = load_file('9917-10137.gz')
x = []
for i in loaded:
dictionary = json.loads(i)
x.append(dictionary)
x.append('\n')
print('x is',x)
with open('9917-10137convert.json', 'w') as file:
file.write(json.dumps(x))
代码只是完全忽略了我要创建的新行,将其打印出来使我所有的json都在同一行上。
答案 0 :(得分:0)
我想您会发现您编写的JSON包含[{"string": "value"}, "\n", {"string": "value"}, "\n", ...]
,其中包含交替的字典和文字化JSON编码的换行符。要获得您似乎想要的内容,只需编写每个字典,然后写上文字(不是JSON编码)换行符即可。
with open('9917-10137convert.json', 'w') as file:
for i in loaded:
file.write(i)
file.write('\n')
这应该产生一个http://jsonlines.org/
文件答案 1 :(得分:0)
您应该尝试使用“ \\n
”而不是“ \n
”,因为由于JSON标准,json.dumps()
使用\\n
来编码换行符。
因此,可能更改此设置将解决您的问题。
x.append('\n')
更多信息: https://docs.python.org/3/library/json.html#encoders-and-decoders