假设我们有一个 JSON 文件 input.json,其中包含多个这样的 JSON 对象,我们希望将其转换为 JSON Lines (JSONL) 文件 output.jsonl,每个对象都按照指定的格式进行转换,那么代码如下:
import json
def convert_to_jsonl(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as f:
data = json.load(f)
with open(output_file, 'w', encoding='utf-8') as f:
for item in data:
converted_item = {
"question": item["name"],
"xihe_answers": [item["dish"]],
"ling_answers": [", ".join(item["recipeIngredient"]) + "\n" + "\n".join(item["recipeInstructions"])]
}
json.dump(converted_item, f, ensure_ascii=False)
f.write('\n')
# 输入和输出文件路径
input_file = 'input.json'
output_file = 'output.jsonl'
# 执行转换
convert_to_jsonl(input_file, output_file)
print("转换完成,已生成 output.jsonl 文件")
代码说明:
读取输入文件:使用 json.load 读取 input.json 文件中的 JSON 数据。假设 input.json 是一个包含多个 JSON 对象的列表。
转换数据:对于每个 JSON 对象,创建一个新的字典 converted_item,按照指定的格式进行转换。
写入输出文件:使用 json.dump 将每个转换后的 JSON 对象写入 output.jsonl 文件,并在每个对象后添加一个换行符。
示例输入文件
input.json
:
json
[
{
"name": "西班牙金枪鱼沙拉",
"dish": "金枪鱼沙拉",
"description": "",
"recipeIngredient": [
"超市罐头装半盒金枪鱼(in spring water)",
"2大片生菜",
"5个圣女果",
"半根黄瓜",
"半个红柿椒",
"半个紫洋葱",
"1个七成熟水煮蛋",
"适量红酒醋",
"适量胡椒",
"适量橄榄油"
],
"recipeInstructions": [
"鸡蛋进水煮,七成熟捞出(依个人喜好),同时备其他菜",
"生菜撕片,圣女果开半,黄瓜滚刀,红柿椒切丝,紫洋葱切丝,鸡蛋四均分",
"金枪鱼去水",
"撒黑胡椒,红酒醋和少许橄榄油",
"拌匀,拍照,开动"
],
"author": "author_67696",
"keywords": [
"西班牙金枪鱼沙拉的做法",
"西班牙金枪鱼沙拉的家常做法",
"西班牙金枪鱼沙拉的详细做法",
"西班牙金枪鱼沙拉怎么做",
"西班牙金枪鱼沙拉的最正宗做法",
"沙拉"
]
},
{
"name": "意大利面",
"dish": "意面",
"description": "",
"recipeIngredient": [
"550克意大利面",
"2瓣大蒜",
"1个红辣椒",
"230克番茄酱",
"适量橄榄油",
"适量盐",
"适量黑胡椒"
],
"recipeInstructions": [
"将意大利面煮至 al dente",
"热锅加橄榄油,炒香大蒜和红辣椒",
"加入番茄酱,煮沸后转小火炖10分钟",
"将煮好的意大利面加入锅中,翻炒均匀",
"撒上盐和黑胡椒调味,出锅装盘"
],
"author": "author_12345",
"keywords": [
"意大利面的做法",
"意大利面的家常做法",
"意大利面的详细做法",
"意大利面怎么做",
"意大利面的最正宗做法",
"意面"
]
}
]
生成的
output.jsonl
文件内容:
json
{"question": "西班牙金枪鱼沙拉", "xihe_answers": ["金枪鱼沙拉"], "ling_answers": ["超市罐头装半盒金枪鱼(in spring water), 2大片生菜, 5个圣女果, 半根黄瓜, 半个红柿椒, 半个紫洋葱, 1个七成熟水煮蛋, 适量红酒醋, 适量胡椒, 适量橄榄油\n鸡蛋进水煮,七成熟捞出(依个人喜好),同时备其他菜\n生菜撕片,圣女果开半,黄瓜滚刀,红柿椒切丝,紫洋葱切丝,鸡蛋四均分\n金枪鱼去水\n撒黑胡椒,红酒醋和少许橄榄油\n拌匀,拍照,开动"]}
{"question": "意大利面", "xihe_answers": ["意面"], "ling_answers": ["500克意大利面, 2瓣大蒜, 1个红辣椒, 200克番茄酱, 适量橄榄油, 适量盐, 适量黑胡椒\n将意大利面煮至 al dente\n热锅加橄榄油,炒香大蒜和红辣椒\n加入番茄酱,煮沸后转小火炖10分钟\n将煮好的意大利面加入锅中,翻炒均匀\n撒上盐和黑胡椒调味,出锅装盘"]}
这样,你就成功地将 JSON 文件转换为了 JSONL 文件,并且每个对象都按照指定的格式进行了转换。