【发布时间】:2020-09-14 20:47:20
【问题描述】:
您好,我有两个 jsonl 文件,如下所示:
one.jsonl
{"name": "one", "description": "testDescription...", "comment": "1"}
{"name": "two", "description": "testDescription2...", "comment": "2"}
second.jsonl
{"name": "eleven", "description": "testDescription11...", "comment": "11"}
{"name": "twelve", "description": "testDescription12...", "comment": "12"}
{"name": "thirteen", "description": "testDescription13...", "comment": "13"}
我的目标是编写一个新的jsonl 文件(保留编码)名称merged_file.jsonl,如下所示:
{"name": "one", "description": "testDescription...", "comment": "1"}
{"name": "two", "description": "testDescription2...", "comment": "2"}
{"name": "eleven", "description": "testDescription11...", "comment": "11"}
{"name": "twelve", "description": "testDescription12...", "comment": "12"}
{"name": "thirteen", "description": "testDescription13...", "comment": "13"}
我的做法是这样的:
import json
import glob
result = []
for f in glob.glob("folder_with_all_jsonl/*.jsonl"):
with open(f, 'r', encoding='utf-8-sig') as infile:
try:
result.append(extract_json(infile)) #tried json.loads(infile) too
except ValueError:
print(f)
#write the file in BOM TO preserve the emojis and special characters
with open('merged_file.jsonl','w', encoding= 'utf-8-sig') as outfile:
json.dump(result, outfile)
但是我遇到了这个错误:
TypeError: Object of type generator is not JSON serializable 我会以任何方式感谢您的提示/帮助。谢谢!我查看了其他 SO 存储库,它们都在编写普通的 json 文件,这在我的情况下也应该可以工作,但它一直失败。
像这样读取单个文件:
data_json = io.open('one.jsonl', mode='r', encoding='utf-8-sig') # Opens in the JSONL file
data_python = extract_json(data_json)
for line in data_python:
print(line)
####outputs####
#{'name': 'one', 'description': 'testDescription...', 'comment': '1'}
#{'name': 'two', 'description': 'testDescription2...', 'comment': '2'}
【问题讨论】:
-
能把extract_json函数的内容贴出来吗?
-
嘿老板,刚刚更新了我的输出。
-
您希望输出为 jsonl 格式还是纯 json 格式?
-
是的,请使用 jsonl 格式。我将不得不共享此文件,因此其他方不必进行清洁。可能吗?非常感谢您的帮助。
标签: python json merge jsonlines