JSON 文件 input.json将其转换为 JSON Lines (JSONL) 文件 output.jsonl

发布于:2024-10-18 ⋅ 阅读:(9) ⋅ 点赞:(0)

假设我们有一个 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 文件,并且每个对象都按照指定的格式进行了转换。